📜  在字典中交换键和值的Python程序

📅  最后修改于: 2022-05-13 01:54:58.947000             🧑  作者: Mango

在字典中交换键和值的Python程序

字典是编程中非常有用的数据结构,通常用于将特定键与值进行散列,以便可以有效地检索它们。

让我们讨论在Python字典中交换键和值的各种方法。

方法#1(当有多个相同的值时不起作用):
一种天真的解决方案可能是分别交换键和值。
例子:

# Python3 code to demonstrate  
# swap of key and value 
    
# initializing dictionary 
old_dict = {'A': 67, 'B': 23, 'C': 45, 'D': 56, 'E': 12, 'F': 69, 'G': 67, 'H': 23}
  
new_dict = dict([(value, key) for key, value in old_dict.items()])
    
# Printing original dictionary 
print ("Original dictionary is : ")
print(old_dict) 
  
print()
  
# Printing new dictionary after swapping keys and values
print ("Dictionary after swapping is :  ") 
print("keys: values")
for i in new_dict:
    print(i, " :  ", new_dict[i])

输出

Original dictionary is : 
{'D': 56, 'E': 12, 'C': 45, 'A': 67, 'F': 69, 'H': 23, 'B': 23, 'G': 67}

Dictionary after swapping is :  
keys: values
67  :   G
69  :   F
23  :   B
56  :   D
12  :   E
45  :   C

但是这种方法存在一个问题。在我们的示例中,我们有多个具有相同值的键,即 ('A', 67) 和 ('G', 67),其他具有相同值的键是 ('B', 23) 和 ('H', 23)。
但在结果中,我们只从每个人那里获得了一个密钥。
即我们只得到('G', 67) 和('B', 23)。

因此,这是解决此问题的另一种方法:

方法#2(处理多个相同的值):
在这种方法中,我们将检查值是否已经存在。如果存在,则只需将其附加到列表中。

例子:

# Python3 code to demonstrate  
# swap of key and value 
    
# initializing dictionary 
old_dict = {'A': 67, 'B': 23, 'C': 45, 'E': 12, 'F': 69, 'G': 67, 'H': 23}
  
# Printing original dictionary 
print ("Original dictionary is : ")
print(old_dict) 
  
print()
new_dict = {}
for key, value in old_dict.items():
   if value in new_dict:
       new_dict[value].append(key)
   else:
       new_dict[value]=[key]
  
# Printing new dictionary after swapping
# keys and values
print ("Dictionary after swapping is :  ") 
print("keys: values")
for i in new_dict:
    print(i, " :", new_dict[i])

输出

Original dictionary is : 
{'F': 69, 'G': 67, 'H': 23, 'A': 67, 'C': 45, 'B': 23, 'E': 12}

Dictionary after swapping is :  
keys: values
45  : ['C']
67  : ['G', 'A']
12  : ['E']
69  : ['F']
23  : ['H', 'B']