我目前正在尝试找出如何反转字典,但由于某种原因,反转字典正在删除最后一个键:值对。该值中有 2 项,而不是 1 项,这是其他键:值对之间的唯一区别。使用我当前的代码,它会反转前 3 个名称和数字,但最后一个甚至不会出现在反转中。我如何反转字典中的所有四个值?
contacts = {
"John A": "858 900 1001",
"Jillian": "858 900 1002",
"Ron": "858 900 1003",
"Miranda": { "mobile": "858 900 1004", "home": "555 1284" }
}
sorted(contacts.keys())
for key in contacts:
value = contacts[key]
if key == "Miranda" and 'mobile' in value:
print(f"contact: {key}, mobile number: {value['mobile']}")
else:
print(f"contact: {key}, mobile number: {value}")
contacts_inv = {value: key for key, value in contacts.items() if isinstance(value, str)}
print(contacts_inv)
我尝试使用标准逆 {v: k for k, v incontacts.items() if isinstance(value, str)} 方法,但这并没有反转所有值,仅反转前 3 个值。
您必须调整反转逻辑以显式处理嵌套字典:
以下是您可以如何实现它:
contacts_inv = {}
for key, value in contacts.items():
if isinstance(value, str):
if value in contacts_inv:
contacts_inv[value].append(key)
else:
contacts_inv[value] = [key]
elif isinstance(value, dict):
for sub_key, sub_value in value.items():
if sub_value in contacts_inv:
contacts_inv[sub_value].append(key)
else:
contacts_inv[sub_value] = [key]
print(contacts_inv)