python - 仅当其字符串值不为空时才将字典项添加到集合中的简便方法?

标签 python dictionary set

我目前有这段代码:

name_set = set()
reader = [{'name':'value1'}, {'name':''}, {'name':'value2'}]
for row in reader:
    name = row.get('name', None)
    if name:
        name_set.add(name)
print(name_set)

在实际代码中,reader 是一个 DictReader,但我使用带有字典的列表来表示它。

请注意,if name: 将检查:

  • 字典中存在空字符串(因此 "")
  • 当关键字不在字典中时不存在

尽管我认为这段代码易于阅读,但我想知道是否有更短的方法,因为这段代码只有 6 行,可以简单地从 dict 中提取值并将它们保存在 设置

最佳答案

您现有的代码没问题。

但由于您要求的是“简短”方式,您可以只使用集合理解/算术:

>>> reader = [{'name':'value1'}, {'name':''}, {'name':'value2'}]
>>> {d['name'] for d in reader} - {''}
{'value1', 'value2'}

关于python - 仅当其字符串值不为空时才将字典项添加到集合中的简便方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51547252/

相关文章:

python - 将 "true"(JSON) 转换为 Python 等效的 "True"

c# - 使用 HashSet<int> 创建整数集

java - 找出一组给定数字的 n 个数字的所有组合

python - 如何在 sla_miss_callback 函数中获取上下文对象

java - 整数的罗马表示

performance - 为什么 Map 实现应该覆盖 foreach?

c++ 映射类作为键 : compare function with recursive one

java - 如何将具有唯一字段的对象添加到 Set

python - 基于类似于 np.where 的字典替换 Spark DataFrame 中的列值

python - 使用 OpenCV 和 SIFT/SURF 校正扫描图像以匹配原始图像