如果条件一个衬里,附加字典值python

时间:2015-12-10 18:12:41

标签: python dictionary

我有一个空字典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块中存在语法错误。 我想在单行中做到这一点。

1 个答案:

答案 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)