python字典-使键值对相反,而某些键共享相同的值而无需重写

时间:2019-04-16 09:32:02

标签: python

这是我得到的字典: dict1 = {'A': 1, 'E': 1, 'I': 2, 'O': 0, 'U': 0}

,我想将键值对设为相反,所以我使用了: opp_dict1 = {v: k for k, v in dict1.items()}

我得到: {1: 'E', 2: 'I', 0: 'U'}

我如何获得: {1: ['A', 'E'], 2: ['I'], 0: ['O', 'U']}

谢谢...。我很困惑

3 个答案:

答案 0 :(得分:0)

您可以尝试以下方法吗?

opp_dict1 = {}
for k, v in dict1.items():
    if v in opp_dict1:
        opp_dict1[v].append(k)
    else:
        opp_dict1[v] = [k]

输出:

{1: ['A', 'E'], 2: ['I'], 0: ['O', 'U']}

答案 1 :(得分:0)

这必须通过常规的for循环而不是理解来完成。下面进行反转。

dict1 = {'A': 1, 'E': 1, 'I': 2, 'O': 0, 'U': 0}
dict2 = {}
for k, v in dict1.items():
    dict2.setdefault(v, []).append(k)

答案 2 :(得分:0)

请尝试使用defaultdict,这意味着如果在字典中找不到密钥,则要创建您定义的默认项(例如KeyError,{{1}),而不要抛出list } ...)

int