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

Python dictionary with tuples as key to new dictionary with keys as first element of tuple

我想将字典 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)]}

有人能告诉我怎么做吗?

只需使用 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)

如果您真的不关心列表在新字典值中的顺序,您应该追加而不是在 0 索引上插入,因为在 0 索引上插入比追加慢。