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

How to print items from a dictionary when multiple values share the same key

我在下面有一本字典,我正在尝试打印某一天的日期。但是,我收到 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

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

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

按照当前的设置,您拥有最顶层的字典,其中包含以下键:长度、最大页数、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

您的顶级词典中没有 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'

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