具有多个值的字典到元组

问题描述 投票:2回答:2

我有一个包含多个值的字典:

dict_a = {1: {'a':1, 'b':2, 'c':3},  2:{'a': 4, 'b':5, c:'6'}}

。 我希望结果如下:

[('a',(1,4)),('b',(2,5)), ('c',(3,6))]  

我写了一个代码:

for keys, values in dict_a:  
    for k, v in values:  
        print(v)  

但结果就像('a',1),('b',2) ......我很少被困在这里。请有人帮我这个!!!

python list dictionary tuples list-comprehension
2个回答
2
投票

您可以使用列表理解:

dict_a = {1: {'a':1, 'b':2, 'c':3}, 2: {'a':4, 'b':5, 'c':6}}

res = [(k, tuple(d[k] for d in dict_a.values())) for k in dict_a[1]]

[('a', (1, 4)), ('b', (2, 5)), ('c', (3, 6))]

假设:

  1. dict_a按外键排序,在Python 3.6+中可能是自动的。否则,请使用collections.OrderedDict
  2. dict_a的每个字典值中的键是相同的。

1
投票

使用collections.defaultdict

建立

from collections import defaultdict    
dct = defaultdict(tuple)

for _, v in dict_a.items():
    for el in v:
        dct[el] += (v[el],)

print(list(dct.items())

[('a', (1, 4)), ('b', (2, 5)), ('c', (3, '6'))]
© www.soinside.com 2019 - 2024. All rights reserved.