当前位置:  开发笔记 > 编程语言 > 正文

dict中的交叉列表(两个以上)

如何解决《dict中的交叉列表(两个以上)》经验,为你挑选了1个好方法。

我有一个不同长度的字典.每个条目都有一个名称和一个列表,如下所示:

somedict = {'Name': [1, 2, 3], 'Name2': [], 'Name3': [2,3] }

如何获得以下列表的交集?我需要动态地做,我不知道dict会有多长.

对于上面的列表,我知道交叉点是空的.但对于

somedict = {'Name': [1, 2, 3], 'Name3': [2,3] }

它应该回来

[2, 3]

thefourtheye.. 11

通常,交集是一个集合操作.因此,您可能希望将字典的值转换为集合,然后运行交集,就像这样

>>> set.intersection(*(set(values) for values in data.values()))
{2, 3}

如果您希望结果为列表,只需将结果集转换为列表,如下所示

>>> list(set.intersection(*(set(values) for values in data.values())))
[2, 3]

这里,表达式*(set(values) for values in data.values())创建一个生成器,它生成转换为集合的字典项的每个值,并将生成器解压缩到该set.intersection函数.



1> thefourtheye..:

通常,交集是一个集合操作.因此,您可能希望将字典的值转换为集合,然后运行交集,就像这样

>>> set.intersection(*(set(values) for values in data.values()))
{2, 3}

如果您希望结果为列表,只需将结果集转换为列表,如下所示

>>> list(set.intersection(*(set(values) for values in data.values())))
[2, 3]

这里,表达式*(set(values) for values in data.values())创建一个生成器,它生成转换为集合的字典项的每个值,并将生成器解压缩到该set.intersection函数.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有