繁体   English   中英

有没有办法将字典列表转换为一组字典?

[英]Is there a way to convert a list of dicts to a set of dicts?

我想将一个字典列表转换为一组字典。

例如:

我有以下列表:

my_list = [{k1:v1, k2:v2}, {k3:v3, k4:v4}]

我只是想轻松地将其转换为一组这些字典。

只要我的列表包含像字符串这样的简单数据,就没有问题:

new_list = set(myList)

但是,如果他们持有 dicts,他们就会落在

TypeError: unhashable type: 'dict'

我宁愿不迭代列表并将每个项目添加到集合中。 我宁愿有一个直接的方法,它也将支持例如字符串列表。

那可能吗?

由于错误表明集合中的元素必须是可散列的,这意味着必须具有唯一的 id(由hash 方法给出)。 你可以创建你自己的字典扩展 class 给字典一个 hash,例如它的所有键的 hash。 或者在将其转换为集合之前测试/过滤您的列表。 简而言之,集合不能包含字典。

Python 没有内置的“frozendict”类型。 如果您真的想模拟 freezeddict 会做什么,那么您可能想要存储一个 dict 的可散列等效项。 例如:

my_list = [{k1:v1, k2:v2}, {k3:v3, k4:v4}]

my_set = set(frozenset(d.items()) for d in my_lst)

如果你想找回你的听写,你需要做的就是:

my_list = list(map(dict, my_set))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM