当多个值共享同一个键时如何从字典中打印项目

Posted

技术标签:

【中文标题】当多个值共享同一个键时如何从字典中打印项目【英文标题】:How to print items from a dictionary when multiple values share the same key 【发布时间】:2022-01-17 09:23:58 【问题描述】:

我在下面有一本字典,我正在尝试打印某一天的日期。但是,我收到了KeyError


 'length': 601,
 'maxPageLimit': 2500,
 'totalRecords': 601,
 'data': ['date': '2021-12-13', 'newCases': 97,
          'date': '2021-12-12', 'newCases': 64,
          'date': '2021-12-10', 'newCases': 108, 
          'date': '2021-12-09', 'newCases': 129]


例如,我希望能够仅打印 2021-12-13 和 97

【问题讨论】:

您好,对于社区来说,证明您也在致力于解决您的问题非常重要。做到这一点的最好方法是包含您目前拥有的基于 text 的代码版本,即使它并不完全正确。根据您的输入,查看您期望的输出可能会有所帮助。 【参考方案1】:

日期在您的程序中用作值,因此您需要使用某种循环来访问所需的日期。

for date in d['data']:
    if date['date'] == foo:
        # do your processing

【讨论】:

【参考方案2】:

按照目前的设置,您拥有最顶层的字典,其中包含以下键:长度、maxPage、TotalyRecords 和数据。然后在数据内部,你有一个包含 2 个索引的列表,每个索引都是它自己的字典。

如果您想获取 12 月 13 日的字典,那就是:

dict['data'][0] # First we go to the "data" key and get that. Then inside of the 
                data key we get index 0, which is 'date': '2021-12-13', 'newCases': 97

例如,如果您想具体了解新病例的数量,则为:

dict['data'][0]['newCases'])

这只是在您拥有的嵌套字典和列表链中进行操作。虽然可能有更好的方法来完成你想做的事情 tbh

【讨论】:

【参考方案3】:

您的***字典中没有 date 键。您需要索引到data,然后从该值中选择一个字典,然后才能获得date

>>> dx = 
...  'length': 601,
...  'maxPageLimit': 2500,
...  'totalRecords': 601,
...  'data': ['date': '2021-12-13', 'newCases': 97,
...           'date': '2021-12-12', 'newCases': 64],
... 
>>> dx.get('data')
['date': '2021-12-13', 'newCases': 97, 'date': '2021-12-12', 'newCases': 64]
>>> dx.get('data')[0]
'date': '2021-12-13', 'newCases': 97
>>> dx.get('data')[0].get('date')
'2021-12-13'

另外,请注意多个值共享同一个键。您在一个列表中有多个字典,每个字典都有匹配的键 - 但它们不是同一个字典!

【讨论】:

以上是关于当多个值共享同一个键时如何从字典中打印项目的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我打印字典的键时,它前面有 dict_keys ? [复制]

当我在循环中添加到字典时有新键时创建一个新列表

多处理:如何在多个进程之间共享一个字典?

从每个键具有多个值的字典中将数据写入 csv

当用户在文本字段中快速输入键时如何显示键的值

当每个字典都有不同的键时,如何按值对字典列表进行排序?