当值是列表且项目不唯一时,交换字典键和值

LucSpan

建立

我有一本大字典,列表中有唯一键,唯一值和非唯一值。

字典看起来像

d = {'a': ['1','2','3'],'b': ['1'],'c': ['1','3']}

问题

我想交换键和值,这样,

d_inverse = {'1': ['a', 'b', 'c'], '2': ['a'],'3': ['a', 'c']}

我发现以下有关交换键和值的答案,

关于将键与列表中的值交换,

最后一个答案接近,但不管理列表中的非唯一值。

那是,

{k: oldk for oldk, oldv in d.items() for k in oldv}

产生

{'1': 'c', '2': 'a', '3': 'c'}

如何计算非唯一值并且不丢失信息?

超人

一种方法是使用collections.defaultdict

d = {'a': ['1','2','3'],'b': ['1'],'c': ['1','3']}

from collections import defaultdict
d_dict = defaultdict(list)
for k,v in d.items():
    for i in v:
        d_dict[i].append(k)

dict(d_dict)
#{'1': ['a', 'b', 'c'], '2': ['a'], '3': ['a', 'c']}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

DynamoDBMapper仅在唯一时保存项目

比较2个由字典和python中唯一键组成的列表

反转python3中字典中的键和值(该值不是唯一的)

当其他2列的元组唯一时,Pandas添加新列并用列表中的项目填充

当索引未知且列中的值唯一时,替换熊猫数据框中的单个值

在Python字典中交换键和值(包含列表)

Python列表字典-返回具有唯一值的键

如果键和值不唯一,则字典不更新

熊猫数据框以字典中的唯一值作为键并以嵌套列表作为值来进行字典

使用唯一键和所有相关值将列表列表转换为字典

如何用唯一键和值作为列表的字典制作数据框?

给定一个整数数组arr,当且仅当该数组中每个值的出现次数唯一时,编写一个返回true的函数

从两列中创建一个具有唯一键和值列表的字典

根据给定键的值唯一性,删除字典列表中的重复字典

当值是列表时,获取字典中最大值的键

当值是列表时,获取字典中最大值的键

检查字典列表中的值是否唯一且没有键

仅当姓氏不唯一时,才显示名字

使用元组的唯一键和各种列表值创建字典

在列表中的嵌套字典中获取唯一值的键

当multiindex不唯一时,pandas系列下降

如何在列表和列中的特定键中获取所有唯一字典值?

将字典的值(列表)与另一个列表进行比较时更改字典的键

当值是python中的值列表时如何获取字典键

如果键和值与其他字典不匹配,则从字典列表中删除字典

当值与列表中的文件匹配时,用另一个字典替换字典中的项目

仅当键唯一时才将 Redis 计数器用作值

Laravel 唯一验证,仅当值不同且没有 id 时

交换具有带键和值列表的字典的熊猫数据框