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

键值列表列表到列表字典的列表

键值列表列表到列表字典的列表

炎炎设计 2023-08-08 15:46:08
我已经尝试了很多次但找不到答案!所以请帮我找到任何逻辑来得到这个答案。main={}abc=[["1",("1A",'1B','1C')], ['1',('1D','1E','1F')], ['2',('2A','2B','2C')], ['2',('2D','2E','2F')], ["3",('3A','3B','3C')]]# I WANT main DICTIONARY ASmain={'1':[("1A",'1B','1C'),('1D','1E','1F')], '2':[('2A','2B','2C'),('2D','2E','2F')], '3':[('3A','3B','3C')]}
查看完整描述

4 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

一个带有defaultdictshould do 的简单循环:

from collections import defaultdict


d = defaultdict(list)


for k,l in abc:

    d[k].append(l)


print(d)

defaultdict(list,

            {'1': [('1A', '1B', '1C'), ('1D', '1E', '1F')],

             '2': [('2A', '2B', '2C'), ('2D', '2E', '2F')],

             '3': [('3A', '3B', '3C')]})

或者如果你想使用 python 的,如果键不存在,dict你可以设置一个空列表作为默认值,然后:setdefaultappend


d = dict()

for k,l in abc:

    d.setdefault(k, []).append(l)


查看完整回答
反对 回复 2023-08-08
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

迭代循环并将键、值对添加到主字典中。


可能有一种更优雅的方法来做到这一点,但我认为简单的 for 循环更明确。


abc=[["1",("1A",'1B','1C')], ['1',('1D','1E','1F')], ['2',('2A','2B','2C')], ['2',('2D','2E','2F')], ["3",('3A','3B','3C')]]


main = {}


for item in abc:

    if item[0] not in main:

        main[item[0]] = [item[1]]

    else:

        main[item[0]].append(item[1])


查看完整回答
反对 回复 2023-08-08
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

尝试这个:


main = {}

for x in abc:

    if x[0] not in main:

        main[x[0]] = []

    main[x[0]].append(x[1])


查看完整回答
反对 回复 2023-08-08
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

一班轮

main = {x[0]: [y[1] for y in abc if y[0] == x[0]] for x in abc}


查看完整回答
反对 回复 2023-08-08
  • 4 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信