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)
答案 0 :(得分:0)
出于可读性考虑,我不建议在这种情况下使用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)
答案 1 :(得分:0)
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)