在嵌套列表 2 中查找嵌套列表 1 中的元素并替换元素
Find elements from nested list 1 in nested list 2 and replacing elements
我正在尝试根据在第二个嵌套 list_y 中找到的匹配元素修改嵌套 list_x,并将该元素替换为 list_2:
中的项目
list_x = [['Light_1', 'CC', 'AA'], ['Light_2', 'BB'], ['Light_3', 'DD', 'AA']]
list_y = [['AA', 'ON'], ['BB', 'ON'], ['DD', 'OFF'], ['CC', 'ON'], ['EE', 'ON']]
所以目标是最终得到一个 list_x 看起来像:
list_x = [['Light_1', ['CC', 'ON'], ['AA', 'ON']], ['Light_2', ['BB', 'ON']], ['Light_3', ['DD', 'OFF'], ['AA', 'ON']]]
到目前为止,我的代码只得到了这个:
for n, i in enumerate(list_x):
if i==list_y:
list_x[n]=list_y
list_x
[['Light_1', 'CC', 'AA'], ['Light_2', 'BB'], ['Light_3', 'DD', 'AA']]
有人可以帮助找出我的代码中缺少的内容以获得所需的结果吗?
非常感谢
我会先为第二个列表创建一个字典,这样您就不必每次需要使用“AA”、“BB”等键进行匹配时都搜索该列表,但可以在字典中更快地查找它:
dict_y = { key: value for key, value in list_y }
然后,使用该字典将第一个列表映射到您想要的输出:
result = [[light, [[key, dict_y[key]] for key in keys]] for light, *keys in list_x]
我正在尝试根据在第二个嵌套 list_y 中找到的匹配元素修改嵌套 list_x,并将该元素替换为 list_2:
中的项目list_x = [['Light_1', 'CC', 'AA'], ['Light_2', 'BB'], ['Light_3', 'DD', 'AA']]
list_y = [['AA', 'ON'], ['BB', 'ON'], ['DD', 'OFF'], ['CC', 'ON'], ['EE', 'ON']]
所以目标是最终得到一个 list_x 看起来像:
list_x = [['Light_1', ['CC', 'ON'], ['AA', 'ON']], ['Light_2', ['BB', 'ON']], ['Light_3', ['DD', 'OFF'], ['AA', 'ON']]]
到目前为止,我的代码只得到了这个:
for n, i in enumerate(list_x):
if i==list_y:
list_x[n]=list_y
list_x
[['Light_1', 'CC', 'AA'], ['Light_2', 'BB'], ['Light_3', 'DD', 'AA']]
有人可以帮助找出我的代码中缺少的内容以获得所需的结果吗?
非常感谢
我会先为第二个列表创建一个字典,这样您就不必每次需要使用“AA”、“BB”等键进行匹配时都搜索该列表,但可以在字典中更快地查找它:
dict_y = { key: value for key, value in list_y }
然后,使用该字典将第一个列表映射到您想要的输出:
result = [[light, [[key, dict_y[key]] for key in keys]] for light, *keys in list_x]