我对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:
在这种情况下是否良好。
答案 0 :(得分:1)
好吧Quack Quack我想出了如何压缩3行 - 这有效:
data['questions'].extend(new_questions['questions'])
答案 1 :(得分:1)
您可能正在寻找setdefault
方法:
data.setdefault('questions', []).extend(new_questions['questions'])