Python创建一个包含字典的新列表,只有当另一个字典的值为真时,其中一个值才属于另一个列表



我有一个收入活动和值的字典(是或否)和一个按钮标题列表。目标是创建一个新列表,并总是附加一个字典,如果收入活动的值为"是",则其中一个值来自按钮贴片。但是,我不知道如何遍历"收入活动"one_answers"值"。字典和遍历的标题同时在新字典中始终设置正确的标题。这是代码:

income_activities = ['question_fishing','question_livestock','question_firewood','question_crop']
income_activities_values =  [tracker.get_slot("question_fishing"), tracker.get_slot("question_livestock"),  tracker.get_slot("question_firewood"), tracker.get_slot("question_crop")]
dic = dict(zip(income_activities, income_activities_values))
button_titles = ['Fishing', 'Livestock', 'Firewood', 'Crop']
buttons = [] #new list of dictionaries
for key, value in dic.items():
if value == 'yes':
buttons.append({"payload":'/affirm', "title": value_of_button_titles})

例如,如果dic看起来像这样:

{'question_fishing': 'yes', 'question_livestock': 'yes', 'question_firewood': 'no', 'question_crop': 'yes'}

字典的最终按钮列表应该是这样的:

buttons=[
{"payload":'/affirm', "title": "Fishing"},
{"payload":'/affirm', "title": "Livestock"},
{"payload":'/affirm', "title": "Crop"}     
]

我不确定我的问题是否正确,但是如何:

for button_title, (key, value) in zip(button_titles, dic.items()):
if value == 'yes':
buttons.append({"payload":'/affirm', "title": button_title})

你可以迭代索引而不是值:

for i in range(len(dic)):
if income_activities_values[i] == 'yes':
buttons.append({"payload":'/affirm', "title": button_titles[i]})

最新更新