Python 仅当字典项的字符串值为';你没有空吗?

Python 仅当字典项的字符串值为';你没有空吗?,python,dictionary,set,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) 在真正的代码中,读取器是一个DictReader,但我使用带有dicts的列表来表示这一点 请注意,if

我现在有一段代码:

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)
在真正的代码中,
读取器
是一个DictReader,但我使用带有dicts的列表来表示这一点

请注意,
if name:
将检查:

  • 字典中存在空字符串(因此
    “”
  • 只要字典中不存在密钥,则不会

虽然,我认为这段代码很容易阅读,但我想知道是否有一种更短的方法,因为这段代码只有6行,只需从
dict
s中提取值,并将其保存在
集中,您现有的代码就可以了

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

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

老实说,这还不错。我可以在这里或那里挑剔一些,但这可能不会使代码更短。您可以使用集合理解:
name\u set={row['name']for row in reader if row.get('name',None)}
smart!谢谢@请随时查看我们的姐妹网站。他们是一个很好的社区,在那里你可以发布工作代码以获得反馈。如果字典中没有“name”,这将引发一个关键错误。(原始代码对此进行了检查。)对于reader}-{''中的d,
{d.get('name'),None}
?@可能会是。在没有任何其他上下文的情况下,我更喜欢未处理的
KeyError