按索引和名称匹配三个列表

时间:2018-01-31 00:37:04

标签: python python-2.7 list

我所追求的例子:

main_names = ['apple', 'orange', 'banana', 'pear', 'mango', 'peach', 'strawberry']
changing_names = ['apple', 'banana', 'cucumber', 'peach', 'pear', 'fish']
changing_values = [100,      200,       300,       400,    500,    600]


output_names = ['apple', 'NA', 'banana', 'pear', 'NA', 'peach', 'NA']
output_values = [100,    'NA',   200,      500,  'NA',   400,   'NA'

added_names = ['cucumber', 'fish']
added_values = [300, 600]

我使用我之前的一个问题作为参考, Match two lists by index and name,我学会了成功检索output / added_names。

对于某些背景,changing_names和changing_values通过它们的索引链接(这是我的麻烦出现的地方,我会使用dict,但我不确定如何以我需要的方式操作dict)

我不知道如何移动更改/ added_values列表以保持与output_names列表的索引一致。如果有办法处理多个列表,同时避免通过索引将它们链接在一起,我会很高兴知道。

1 个答案:

答案 0 :(得分:0)

字典和一些列表推导是一种方式:

mapper = dict(zip(changing_names, changing_values))

output_names = [x if x in changing_names else 'NA' for x in main_names]
output_values = [mapper.get(x, 'NA') for x in output_names]

added_names = [x for x in changing_names if x not in main_names]
added_values = [mapper.get(x, 'NA') for x in added_names]