在列表中列出字典中的所有键。 (列表中的词典)

时间:2019-06-25 16:46:32

标签: python dictionary

好的,不知道如何解释这个问题,但是就行了。

这是我的字典myDictionary = {'12/2019' : [{'1003' : 2}, {'1040' : 3}]}

我正在尝试列出'1003', '1040'

我尝试使用此方法:

for i in range(len(a['12/2019'])):
    print(a['12/2019'][i].keys())

这是一种作品,但它却回报了我

dict_keys(['1003'])
dict_keys(['1040'])

无论如何,我只能将1030和1040与... dict_keys([''])隔离吗?

5 个答案:

答案 0 :(得分:1)

您可以遍历字典的值,如果值是列表,则遍历列表中的字典,并将所有键附加到结果上

myDictionary = {'12/2019' : [{'1003' : 2}, {'1040' : 3}],
                '11/2019': '1005', '10/2019': 1234,
                '09/2019': [{'1006' : 2}, {'1042' : 3}],
                '08/2019': (1,2)}

keys=[]

#Iterate over values 
for value in myDictionary.values():

    #If value is a list
    if isinstance(value, list):

        #Iterate over the list
        for d in value:

            #Add the keys to the result
            keys.extend(list(d.keys()))

print(keys)

输出将为

['1003', '1040', '1006', '1042']

您也可以通过列表理解来做到这一点,但是它并不是真正可读的,所以我会避免这样做

[key for value in myDictionary.values() if isinstance(value, list) for d in value for key in d.keys()]

答案 1 :(得分:1)

遍历列表中的子字典,获取关键点:

for sub_dict in a['12/2019']:
   for key, val in sub_dict.items():
        print(key)

答案 2 :(得分:1)

您可以使用列表理解:

[k for v in myDictionary.values() for x in v for k in x]

代码中:

myDictionary = {'12/2019' : [{'1003' : 2}, {'1040' : 3}]}

print([k for v in myDictionary.values() for x in v for k in x])
# ['1003', '1040']

答案 3 :(得分:1)

您可以通过执行以下操作来做到这一点

data = {'12/2019' : [{'1003' : 2}, {'1040' : 3}]}
# Data is a dictionary of where each value corresponding
# to the key is a list of dictionaries.

for k, v in data.items():
    # v is a list of dictionaries
    all_keys = []
    for value in v:
        all_keys.extend(list(value.keys()))
    print (all_keys)

结果为['1003', '1040']

答案 4 :(得分:1)

这可能超出了您的需要,但是如果您为该示例共享的数据只是您实际查看的一小部分,则此递归函数可以扩展到您想要的深度。 / p>

由于您似乎想跳过最外层的按键,因此我在一个地方允许您跳过给定深度的按键。您不应该手动设置level参数,因为代码将自行对其进行更新。

List<Int>