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

标签 python python-3.x list nested-lists

我有两个嵌套列表:

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 列表中每个列表的第四个索引(如果为 true)(vid1/vid2/vid3/vid4)

更新数据:

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

更新新数据: 数据1 = [["tr3", 1200, 6798381], ["tr1", 1001, 6798381],["tr1", 1001, 6798381],["tr1", 1000, 6798381], ["tr1", 1000, 6798381], ["tr2", 1200, 6798381], ["tr4", 1200, 6798381]]

最佳答案

您可以zip这两个列表并将子列表映射到operator.eq函数进行比较。由于 map 在任何输入序列用完时停止迭代,因此第二个子列表的第四项将不会包含在比较中:

from operator import eq

for a, b in zip(data1, data2):
    print(all(map(eq, a, b)) and b[3])

输出:

vid1
vid2
vid3
False

演示:Try it online!

关于python - 比较具有不同索引量的两个嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77042188/

相关文章:

python - 如何在不传递 db 对象的情况下将 Flask 模型从 app.py 中拆分出来?

python - 在 VScode 上创建新的 python 文件时如何使用模板?

python-3.x - 在 openCV python 中绘制矩形

python - 获取嵌套列表字典中所有值的总和

python - 如何在 python 中创建 turtle 列表?

python - 属性错误 : 'tuple' object has no attribute 'encode' - MySQLdb Python

python - Google Drive API V3 从快捷方式获取原始文件

python - 更改 python 3.3.2 中的 shell 打印颜色

java - 每行高度可变的黑莓列表字段?

r - 如何从两个列表中获取每个组合?