我有一个空字典hashtags_dict
,我希望在满足条件时填写每个键的多个值。 haystack_types
包含密钥
for (some_loop):
eggs = get_new_egg()
if (needle):
for category in haystack_types:
try:
hashtags_dict[category].append(eggs if needle in haystack_types[category])
except KeyError:
hashtags_dict[category] = [eggs if needle in haystack_types[category]]
try
块中存在语法错误。
我想在单行中做到这一点。
答案 0 :(得分:3)
如果没有else
子句,则不能使用条件表达式。表达式必须生成某些内容,而当if needle in haystack_types[category]
为假时,您的表达式不会生成。
生成None
或使用正确的if
声明:
if needle in haystack_types[category]:
hashtags_dict[category].append(eggs)
您可以在此处使用dict.setdefault()
来处理hashtags_dict
尚未包含该列表的情况:
for category in haystack_types:
if needle in haystack_types[category]:
hashtags_dict.setdefault(category, []).append(eggs)
如果缺少键(第一个参数), dict.setdefault()
将使用第二个参数作为默认值,因此上次将在您第一次尝试访问给定键时将键设置为空列表。 / p>
您可以使用if
访问循环中的dict.items()
值,使haystack_types
语句更简洁:
for category, types in haystack_types.items():
if needle in types:
hashtags_dict.setdefault(category, []).append(eggs)