如何对包含值列表的字典进行反向索引

2024-09-28 20:47:30 发布

您现在位置:Python中文网/ 问答频道 /正文

d = { "claims": [
              "Georg",
              "Bob",
              "Jeny",
              "John",
              "Catherin",
              "Tommen",
              "Linda",
              "Bran",
              "Sansa",
              "Ross",
              "Lyana",
              "Gilly",
              "Daario",
              "Sam",
              "Tyrion",
              "Peter",
              "Arya",
              "Sandra",
              "Catelyn"
            ],
     "names" : ["Lyana",
              "Gilly",
              "Daario",
              "Sam",
              "Tyrion",
              "Peter",
              "Arya",
              "Sandra",
              "Catelyn"]

          }

my_dict = {value: key for key in d for value in d[key]}
print(my_dict)

Tags: keyinforvaluemysamdictpeter
2条回答
def invert_dict(d):
    inverse = dict() 
    for key in d:
       for item in d[key]:
            if item not in inverse: 
                inverse[item] = [key] 
            else: 
                inverse[item].append(key) 
    return inverse
invert_dict(d)

为了可读性,我不建议在这种情况下使用dict理解。dict方法“setdefault”就是您要查找的方法。你知道吗

d = { "claims": [
              "Georg",
              "Bob",
              "Jeny",
              "John",
              "Catherin",
              "Tommen",
              "Linda",
              "Bran",
              "Sansa",
              "Ross",
              "Lyana",
              "Gilly",
              "Daario",
              "Sam",
              "Tyrion",
              "Peter",
              "Arya",
              "Sandra",
              "Catelyn"
            ],
     "names" : ["Lyana",
              "Gilly",
              "Daario",
              "Sam",
              "Tyrion",
              "Peter",
              "Arya",
              "Sandra",
              "Catelyn"]

          }

new_dict = {}
for k, v in d.items():
    for i in v:
        # return empty list if key not found, thereafter append 'names' or 'claims' to the returned value
        new_dict.setdefault(i, []).append(k)

相关问题 更多 >