2 回答

TA贡献1811条经验 获得超6个赞
看起来您必须初始化a为 a defaultdict,而不是列表
>>> from collections import defaultdict
>>> new2 = {'caseid': {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 6}}
>>> a = defaultdict(list)
>>> for x,y in new2['caseid'].items():
... a[y].append(x)
...
>>> print(a)
defaultdict(<class 'list'>, {1: [0, 1], 2: [2, 3, 4], 6: [5]})
>>> print(dict(a))
{1: [0, 1], 2: [2, 3, 4], 6: [5]}

TA贡献1963条经验 获得超6个赞
如果您有一组以上的嵌套字典
new_d = {'caseid1': {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 6},
'caseid2': {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 6},
'caseid3': {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 6},
'caseid4': {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 6},
'caseid5': {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 6},
'caseid6': {0: 1, 1: 1, 2: 2, 3: 2, 4: 2, 5: 6}}
a = defaultdict(list)
for k1, v1 in new_d.items():
for k2, v2 in v1.items():
a[f'{k1}_{v2}'].append(k2)
dict(a)
output:
{'caseid1_1': [0, 1],
'caseid1_2': [2, 3, 4],
'caseid1_6': [5],
'caseid2_1': [0, 1],
'caseid2_2': [2, 3, 4],
'caseid2_6': [5],
'caseid3_1': [0, 1],
'caseid3_2': [2, 3, 4],
'caseid3_6': [5],
'caseid4_1': [0, 1],
'caseid4_2': [2, 3, 4],
'caseid4_6': [5],
'caseid5_1': [0, 1],
'caseid5_2': [2, 3, 4],
'caseid5_6': [5],
'caseid6_1': [0, 1],
'caseid6_2': [2, 3, 4],
'caseid6_6': [5]}
添加回答
举报