我有两个嵌套列表:
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)内每个列表的第四个索引(如果为真)
你可以尝试:
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")
只需比较各个切片即可:
for x1, x2 in zip(data1, data2):
print(x1 == x2[: len(x1)])
True
True
True
False