我有两个元组列表(项目名称,版本号) - 一个包含所有当前项目,另一个包含要导入的项目。如果导入项目与当前项目存在名称冲突,则返回较新的版本。我的解决方案是:
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]吗?