为了账号安全,请及时绑定邮箱和手机立即绑定

类型错误:列表索引必须是整数或切片,而不是 dict

类型错误:列表索引必须是整数或切片,而不是 dict

慕码人2483693 2021-06-06 07:01:47
我正在尝试迭代具有相同索引的多个值的字典以解释重复值。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],
查看完整描述

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


查看完整回答
反对 回复 2021-06-09
?
神不在的星期二

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


查看完整回答
反对 回复 2021-06-09
  • 2 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号