通过python从曲目中获取列表的最佳方式,扩展它并将其放回

时间:2017-09-22 20:02:38

标签: python dictionary

我对python和编程比较陌生并且代码正常工作,但是我想知道是否有更好的更简洁的方法来实现同样的功能。

我的代码创建了一个包含一些上下文键值对的字典,然后我去了多次问题循环。我想将所有问题收集到我的数据字典中,第一次添加问题列表,并在后续循环中扩展它。

我的工作代码:

   data = {
              'name': product_name,
              'question summary': question_summary,
          }  
   for l in loop:
      <my code gets a list of new questions>
      if 'questions' not in data:
           data ['questions'] = new_questions['questions']
      else:
           all_questions = data.get('questions')
           all_questions.extend(new_questions['questions'])
           data ['questions'] = all_questions

我已经阅读过使用默认dict来启用自动创建字典项目(如果它不存在),但我不确定如何首先定义data作为其中的一部分键值对不是列表,我希望它具有额外的上下文键值对。

我还觉得3行代码会将更多问题附加到数据中的问题列表(如果存在)应该/可能更短但是这不起作用,因为data.get()不可调用

data['questions'] = data.get('questions').extend(new_questions['questions'])

并且这不起作用,因为extend返回none:

data['questions'] = all_questions.extend(new_questions['questions'])

好的,所以我想出了如何压缩3行,请参阅下面的答案,但是我仍然想知道If: else:在这种情况下是否良好。

2 个答案:

答案 0 :(得分:1)

好吧Quack Quack我想出了如何压缩3行 - 这有效:

data['questions'].extend(new_questions['questions'])

答案 1 :(得分:1)

您可能正在寻找setdefault方法:

data.setdefault('questions', []).extend(new_questions['questions'])