[英]add a second value to a key (dict) python
我需要確保我沒有多個相同的鍵,如果是這樣,請保留第一個並將其值(使其成為列表)添加到現有鍵中,這就是我嘗試過的:
my_dict = {1: "A", 2: "B", 1: "C"}
new_dict={}
list_keys = list(my_dict.keys())
list_values = list(my_dict.values())
for i in range(len(list_values)):
if list_keys[i] in new_dict.keys():
new_dict[list_keys[i]].append(list(list_values[i]))
else:
new_dict.update({list_keys[i]: list_values[i]})
return new_dict
需要的結果:
{1: ["A", "C"], 2: ["B"]}
最簡潔的反轉dict
的方法是使用defaultdict
:
from collections import defaultdict
d = {"A": 1, "B": 2, "C": 1}
rev = defaultdict(list)
for k, v in d.items():
rev[v].append(k)
rev
# defaultdict(<class 'list'>, {1: ['A', 'C'], 2: ['B']})
第一行沒有意義。 一個字典不能有同一個鍵的兩個值,所以當你運行第一行時,結果字典是:
my_dict = {1: 'A', 2: 'B', 1: 'C'}
print(my_dict)
# {1: 'C', 2: 'B'}
您可以做的是遍歷所需鍵和值的列表,並以這種方式構建您想要的字典:
my_keys = [1, 2, 1]
my_vals = ['A', 'B', 'C']
my_dict = {}
for k, v in zip(my_keys, my_vals):
if k in my_dict.keys():
if not isinstance(my_dict[k], list):
my_dict[k] = [my_dict[k]] # convert to a list
my_dict[k].append(v)
else:
my_dict[k] = v
print(my_dict)
# {1: ['A', 'C'], 2: 'B'}
根據評論,您最初有一本字典in_dict = {'A': 1, 'B': 2, 'C':1}
。 鑒於此in_dict
,您可以通過在上面的代碼中設置my_keys = in_dict.values()
和my_vals = in_dict.keys()
來獲得所需的結果。
如果需要,使用推導式
a = {"A":1, "B":2, "C":1}
{value: [item_[0] for item_ in a.items() if item_[1] == value] for value in set(a.values())}
Output
{1: ['A', 'C'], 2: ['B']}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.