gpt4 book ai didi

Python - 比较元组列表中的项目

转载 作者:太空宇宙 更新时间:2023-11-03 15:52:53 25 4
gpt4 key购买 nike

我有两个元组列表(项目名称、版本)- 一个包含所有当前项目,另一个包含要导入的项目。如果导入项和当前项之间存在名称冲突,我想返回较新的版本。我的解决方案是:

currentItemVersion = [("ItemA", "001"), ("ItemB", "002"), ("Camera", ""), ("SHD_metal", "001"), ("SHD_wood", "002")]
importItemVersion = [("ItemB", "001"), ("Camera", "001"), ("SHD_metal", "002"), ("SHD_wood", "004")]

def updateItems(currentItems, importItems):
updatedItems = []
for i, v in currentItemVersion:
if i in [n[0] for n in importItemVersion]:
ni, nv = importItemVersion[[n[0] for n in importItemVersion].index(i)]
nvInt = int(nv) if nv else -1
vInt = int(v) if v else -1
if nvInt > vInt:
updatedItems.append((ni, nv))
elif nvInt == vInt:
updatedItems.append((ni, nv))
else:
updatedItems.append((i, v))
else:
print('item {0} was not imported'.format(i))
updatedItems.append((i, v))
return updatedItems

print(updateItems(currentItemVersion, importItemVersion))

我想知道是否有更好的解决方案,尤其是第 7 和 8 行。我能以某种方式检查一下吗

if i in [n[0] for n in list]

并在一次操作中返回 n[1]?

最佳答案

改用dict,这样你就不需要查找key与内循环冲突,并将复杂度从O(m*n)降低到O(m)。

关于Python - 比较元组列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com