Python 如何基于第一个列表的第一项和第二项比较两个不相等的嵌套列表并获取值或false
我对python非常陌生,我试图根据列表的前两个值比较两个嵌套列表。如果这些值相互匹配,则我希望得到第二个列表的第三个值作为输出: 例如:Python 如何基于第一个列表的第一项和第二项比较两个不相等的嵌套列表并获取值或false,python,list,Python,List,我对python非常陌生,我试图根据列表的前两个值比较两个嵌套列表。如果这些值相互匹配,则我希望得到第二个列表的第三个值作为输出: 例如: list_1 =[[600,700], [500,200], [100,250], [300,100]] list_2 = [[600,700,"A"], [500,600,"B"], [100,250,"C"]] 我想得到: list_new = ["A", false, "C", false] 我想遍历列表_1,将列表_2的前两个值作为标准。如果值与
list_1 =[[600,700], [500,200], [100,250], [300,100]]
list_2 = [[600,700,"A"], [500,600,"B"], [100,250,"C"]]
我想得到:
list_new = ["A", false, "C", false]
我想遍历列表_1,将列表_2的前两个值作为标准。如果值与匹配,我希望输出为列表2的第三个值,否则为false
我的想法(背后的逻辑):
如果能得到一些帮助就太好了 具有以下功能:
import itertools
list_1 =[[600,700], [500,200], [100,250], [300,100]]
list_2 = [[600,700,"A"], [500,600,"B"], [100,250,"C"]]
res = [l2[2] if (l1 and l2 and l1[:2] == l2[:2]) else False
for l1, l2 in itertools.zip_longest(list_1, list_2)]
print(res) # ['A', False, 'C', False]
另一种方式:
list_1 =[[600,700], [500,200], [100,250], [300,100]]
list_2 = [[600,700,"A"], [500,600,"B"], [100,250,"C"]]
list(map(lambda x, y: y[2] if y[:2]==x[:2] else False, list_1, list_2))
+ list(itertools.repeat(False, len(list_1) - len(list_2)))
Out[12]: ['A', False, 'C', False]
OP要求得到一个列表而不是打印输出谢谢!如何修改此项以将值附加到列表_1,以便我的结果是:列表_1=[[600700,A],[500200,false],[100250,C],[300100,false]?谢谢!它工作得很好,我唯一需要改变的是在y.extend('False')中添加方括号,使其成为一个单词:y.extend(['False'])
list_1 =[[600,700], [500,200], [100,250], [300,100]]
list_2 = [[600,700,"A"], [500,600,"B"], [100,250,"C"]]
list_im_1 = {}
for x in list_2:
list_im_1[(x[0],x[1])] = x[2]
result = []
for x in list_1:
y = []
y.extend(x)
if tuple(x) in list_im_1:
y.extend(list_im_1[tuple(x)])
else:
y.extend('False')
result.append(y)
list_1 =[[600,700], [500,200], [100,250], [300,100]]
list_2 = [[600,700,"A"], [500,600,"B"], [100,250,"C"]]
list(map(lambda x, y: y[2] if y[:2]==x[:2] else False, list_1, list_2))
+ list(itertools.repeat(False, len(list_1) - len(list_2)))
Out[12]: ['A', False, 'C', False]