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