以元组为键的 Python 字典,以键为元组的第一个元素的新字典的键

时间:2021-07-07 04:36:05

标签: list dictionary tuples

我想将字典 d1 转换为字典 d2:

d1 = {('a','b'):1, ('a','c'):2, ('a','d'):3, ('b','c'):2, ('b','d'):1, ('c','f'):2, ('f','c'):2 }

d2 = {'a': [('b',1),('c',2) ,('d',3)], 'b':[('c',2),('d',1)], 'c':[('f',2)], 'f':[('c',2)]}

有人能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:1)

只需使用 for 循环并遍历字典,然后以元组第一个元素为键创建一个新字典

base = {('a','b'):1, ('a','c'):2, ('a','d'):3, ('b','c'):2, ('b','d'):1, ('c','f'):2, ('f','c'):2 }
newDict = {}
for key in base:
    #Key is the tuple
    if not key[0] in newDict.keys():
        newDict[key[0]] = []
    newDict[key[0]].insert(0, (key[1], base[key]))

print(newDict)

如果你真的不关心列表在新字典值中的顺序,你应该 append 而不是 insert on 0 index,因为 insert on 0 index 比 append 慢。

相关问题