通过词典中的词典进行一行迭代

时间:2017-06-15 08:32:23

标签: python python-3.x dictionary

G2 = {'a': {'c': 1, 'b': 1}, 'b': {'a': 1, 'c': 1}}

b = G2.values()

for i in b:
    for key, value in i.items():
        list.append(key)

#result: ['c', 'b', 'a', 'c']

我可以使用列表生成器获得相同的结果吗? 我试过这样的话:

list2 = [key for key, value in i.items() for i in b]

#but i get: ['a', 'a', 'c', 'c']

1 个答案:

答案 0 :(得分:4)

使用itertools.chain.from_iterable链接字典值(也称为键),然后转换为列表以打印结果:

import itertools

G2 = {'a': {'c': 1, 'b': 1}, 'b': {'a': 1, 'c': 1}}

#['c', 'b', 'a', 'c']

result = list(itertools.chain.from_iterable(G2.values()))

print(result)

结果:

{{2} }

请注意,当您在字典键上进行迭代时,订单无法保证。

Variant未使用['c', 'b', 'c', 'a'] 并且在理解中使用展平双循环(这可能更接近您的尝试):

itertools