我有两个嵌套列表和结果
data1 = [
["tr1", 1002, 6798381], # return false
["tr1", 1001, 6798381], # return false
["tr1", 1001, 6798381], # return false
["tr1", 1000, 6798381], # return vid1
["tr1", 1000, 6798381], # return vid2 (can be vid1, but vid1 already used) | But I got False
["tr2", 1200, 6798382], # vid3
["tr4", 1200, 6798384], # vid5
["tr5", 1200, 6798385], # false
["tr3", 1200, 6798383], # vid4
]
data2 = [
["tr1", 1000, 6798381, "vid1"],
["tr1", 1000, 6798381, "vid2"],
["tr2", 1200, 6798382, "vid3"],
["tr3", 1200, 6798383, "vid4"],
["tr4", 1200, 6798384, "vid5"]
]
如果值相同,我需要将data2最后一个索引(data2[-1],即vid1或vid2等)移动到data1中,但如果data2 vid已被占用,我应该删除,这样我就不会从data2获取多个数据
我使用的代码
for x in data1:
key = (x[0], x[1], x[2])
if key in data2_dict:
print(data2_dict[key])
# Remove the key from data2_dict to prevent reuse
del data2_dict[key]
else:
print("false")
我从代码中得到的输出
false
false
false
vid1
False (should be vid1 or vid2, but vid1 already used so should be vid2)
vid3
vid5
false
vid4
我期望的输出
false
false
false
vid1
vid2
vid3
vid5
false
vid4
or
false
false
false
vid2 --
vid1 --
vid3
vid5
false
vid4
你们能帮我吗?谢谢
由于 vid1 和 vid2 共享相同的密钥,因此最好构建一个列表字典来跟踪相同密钥的 vid:
data = {}
for *key, vid in data2:
data.setdefault(tuple(key), []).append(vid)
for key in map(tuple, data1):
print(data.get(key, [False]).pop())
输出:
False
False
False
vid2
vid1
vid3
vid5
False
vid4