python字典中相同值找键_python – 查找具有重复值的字典键

首先,将字典翻转成反向多字节,将每个值映射到它映射到的所有键.喜欢这个:

>>> some_dict = {"firstname":"Albert","nickname":"Albert","surname":"Likins","username":"Angel"}

>>> rev_multidict = {}

>>> for key, value in some_dict.items():

... rev_multidict.setdefault(value, set()).add(key)

现在,您只是在寻找具有多于1个值的multidict中的键.这很容易:

>>> [key for key, values in rev_multidict.items() if len(values) > 1]

['Albert']

除了multidict键之外,还有原始的dict值.因此,这是每个重复的值,而不是与每个重复值匹配的所有键.但是你知道匹配每个重复值的所有键是什么?

>>> [values for key, values in rev_multidict.items() if len(values) > 1]

[{'firstname', 'nickname'}]

当然,这会给你一个集合列表.如果您想将其展平为单个列表或集合,那很容易.您可以使用chain.from_iterable,嵌套理解或任何其他常用技巧.例如:

>>> set(chain.from_iterable(values for key, values in rev_multidict.items() if len(values) > 1))

{'firstname', 'nickname'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值