比较两个具有不同索引量的嵌套列表

问题描述 投票:0回答:2

我有两个嵌套列表:

data1 = [["tr1", 1000, 6798381], ["tr1", 1000, 6798381], ["tr2", 1200, 6798381], ["tr4", 1200, 6798381]]

data2 = [["tr1", 1000, 6798381, "vid1"], ["tr1", 1000, 6798381, "vid2"], ["tr2", 1200, 6798381, "vid3"], ["tr3", 1200, 6798381, "vid4"]]

data2_but_same_index = [["tr1", 1000, 6798381], ["tr1", 1000, 6798381], ["tr2", 1200, 6798381], ["tr3", 1200, 6798381]]

然后我将在它们之间进行比较,但仅在第 3 个索引中进行比较。因为当它返回 true 时,它将采用 data2 列表中的第四个索引。

当索引数量相同时我期望的回报(比较data1和data2_but_same_index)

data1 = [["tr1", 1000, 6798381], ["tr1", 1000, 6798381], ["tr2", 1200, 6798381], ["tr4", 1200, 6798381]]

data2 = [["tr1", 1000, 6798381, "vid1"], ["tr1", 1000, 6798381, "vid2"], ["tr2", 1200, 6798381, "vid3"], ["tr3", 1200, 6798381, "vid4"]]

data2_but_same_index = [["tr1", 1000, 6798381], ["tr1", 1000, 6798381], ["tr2", 1200, 6798381], ["tr3", 1200, 6798381]]

for x in data1 :
  if x in data2_without_vid :
    print("true")
  else :
    print("false")

输出将返回:

true
true
true
false

我希望我可以像这样比较data_1和data_2,但返回的是data_2列表(vid1/vid2/vid3/vid4)内每个列表的第四个索引(如果为真)

python list nested-lists
2个回答
0
投票

你可以尝试:

data2_dict = {(item[0], item[1], item[2]): item[3] for item in data2}

for x in data1:
    key = (x[0], x[1], x[2])
    if key in data2_dict:
        print(data2_dict[key])
    else:
        print("false")

0
投票

只需比较各个切片即可:

for x1, x2 in zip(data1, data2):
    print(x1 == x2[: len(x1)])

True
True
True
False
© www.soinside.com 2019 - 2024. All rights reserved.