【发布时间】:2018-09-28 14:15:36
【问题描述】:
我有两个这样的列表:
my_list = [['can you change departure date to 30th March', '207443006734608218498'], ['can you downgrade to economy class?', '276566920664343421717'], ['book flight from San Francisco to Los Angeles on April 17-24', '897058868855606085615']]
ids_list = ['207443006734608218498', '276566920664343421717', '897058868855606085615']
我检查 my_list 中匹配的元素的 ids_list 然后我尝试附加到其他列表中
我试着得到最终的名单:
[
('can you change departure date to 30th March',
{
'ids': {
'207443006734608218498': 'True',
'276566920664343421717': 'False',
'897058868855606085615': 'False'
}
}),
('can you downgrade to economy class?',
{
'ids': {
'207443006734608218498': 'False',
'276566920664343421717': 'True',
'897058868855606085615': 'False'
}
}),
('book flight from San Francisco to Los Angeles on April 17-24',
{
'ids': {
'207443006734608218498': 'False',
'276566920664343421717': 'False',
'897058868855606085615': 'True'
}
})
]
为此,我编写了简单的循环并像这样更新字典的元组
>>> data = {}
>>> for x in my_list:
... for y in ids_list:
... data.update({y: "True"} if x[1]==y else {y: "False"})
... print((x[0],{"ids": data}))
...
('can you change departure date to 30th March', {'ids': {'207443006734608218498': 'True', '276566920664343421717': 'False', '897058868855606085615': 'False'}})
('can you downgrade to economy class?', {'ids': {'207443006734608218498': 'False', '276566920664343421717': 'True', '897058868855606085615': 'False'}})
('book flight from San Francisco to Los Angeles on April 17-24', {'ids': {'207443006734608218498': 'False', '276566920664343421717': 'False', '897058868855606085615': 'True'}})
但是当我在列表中追加时,当我打印时数据字典附加了错误的值,那么数据字典值是正确的 我应该做错什么?
>>> t = []
>>> for x in my_list:
... for y in ids_list:
... data.update({y: "True"} if x[1]==y else {y: "False"})
... t.append((x[0],{"ids":data}))
...
>>> t
[
('can you change departure date to 30th March', {'ids': {'207443006734608218498': 'False', '276566920664343421717': 'False', '897058868855606085615': 'True'}}),
('can you downgrade to economy class?', {'ids': {'207443006734608218498': 'False', '276566920664343421717': 'False', '897058868855606085615': 'True'}}),
('book flight from San Francisco to Los Angeles on April 17-24', {'ids': {'207443006734608218498': 'False', '276566920664343421717': 'False', '897058868855606085615': 'True'}})]
【问题讨论】:
-
您不断重复使用相同的
data引用并就地修改它。完成后,整个列表中只会显示最后一次修改。 -
@MadPhysicist 对!!但是如何附加正确的数据字典?
标签: python python-3.x dictionary