簡體   English   中英

向鍵(dict)添加第二個值 python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM