python - 从字典中获取值到集合中的最有效方法

标签 python dictionary set set-comprehension

我似乎无法弄清楚如何使用集合理解将以下内容写入一行代码。如果不可能,是否有更快的方法来做我在这里想做的事情?基本上只是将字典的所有值放入一个集合中。一些值可以是空集。下面是一个简单的例子

d = {1:set(),2:{1,2,3},3:{4}}

t = set()

for k, v in d.items():
   if len(v) > 0:
      t.update(v)

print(t)

输出

{1,2,3,4}

最佳答案

最简单的可能是:

>>> set.union(*d.values())
{1, 2, 3, 4}

没有必要对值中的空集进行特例处理。将一个空集折叠到联合中对结果没有影响,并且在 Python 代码中提前检查长度比让 set.union() 找出它要慢。

具有一定的理解力

你也可以用集合理解来做,但我预计这种方式会慢得多(虽然我没有计时):

>>> {x for oneset in d.values() for x in oneset}
{1, 2, 3, 4}

关于python - 从字典中获取值到集合中的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48118386/

相关文章:

python - 如何按行对多个条件的 Pandas 数据框列进行求和

python - 交互式经纪人 : How to retrieve transaction history records?

flutter - 如何在不识别键的情况下获取列表<map<string,dynamic>数据每个映射键和值

c++ - STL 迭代器不起作用?不知道为什么

java - 如何确定位置 Z 是否在起点 X 和终点 Y 的区域内

python - 循环绘制直方图并并排显示

python - 在python中顺序打开和关闭应用程序

javascript:按多个(超过2个)键对字典列表进行排序

arrays - 在 VBA 中使用字典将行与 Sum 和 Max/Min 合并到某些列

C++ 寻找 std::sets 并集的惰性方法