为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

POPMUISE 2022-01-11 17:02:02
这是我得到的字典: 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 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

你可以试试以下方法:


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']}


查看完整回答
反对 回复 2022-01-11
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

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


dict1 = {'A': 1, 'E': 1, 'I': 2, 'O': 0, 'U': 0}

dict2 = {}

for k, v in dict1.items():

    dict2.setdefault(v, []).append(k)


查看完整回答
反对 回复 2022-01-11
?
墨色风雨

TA贡献1853条经验 获得超6个赞

尝试使用defaultdict,这意味着如果在字典中找不到键KeyError,则创建您定义的默认项(如list,int...),而不是抛出


from collections import defaultdict

d = defaultdict(list)

    for k,v in dict1.items():

        d[v].append(k)


查看完整回答
反对 回复 2022-01-11
  • 3 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号