Python TypeError:列表索引必须是整数或切片,而不是dict

Python TypeError:列表索引必须是整数或切片,而不是dict,python,dictionary,Python,Dictionary,我试图对同一索引使用多个值遍历字典,以解释重复值 a = [] for x,y in new2.items(): a[y].append(x) print(a) 我尝试了许多方法,请帮助我确定可能的错误。 输入文件类似于:0:1,1:1,2:2,3:2,4:2,5:6, 输出应该是1:[0,1],2:[2,3,4],6:[5,6,7],7:[8,9],12:[10],14:[11,12],15:[15,16] 如果您有多套嵌套的dict,谢谢您 new_d = {'caseid1':

我试图对同一索引使用多个值遍历字典,以解释重复值

a = []
for x,y in new2.items():
    a[y].append(x)
print(a)
我尝试了许多方法,请帮助我确定可能的错误。 输入文件类似于:0:1,1:1,2:2,3:2,4:2,5:6, 输出应该是1:[0,1],2:[2,3,4],6:[5,6,7],7:[8,9],12:[10],14:[11,12],15:[15,16]


如果您有多套嵌套的dict,谢谢您

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]}

看起来您必须将
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]}
>>从集合导入defaultdict
>>>new2={'caseid':{0:1,1:1,2:2,3:2,4:2,5:6}
>>>a=defaultdict(列表)
>>>对于新2['caseid']中的x,y。items():
...     a[y]。追加(x)
... 
>>>印刷品(a)
defaultdict(,{1:[0,1],2:[2,3,4],6:[5]})
>>>印刷(dict(a))
{1: [0, 1], 2: [2, 3, 4], 6: [5]}