我有兩個元組列表(項目名稱,版本) - 一個包含所有當前項目,另一個包含要導入的項目。如果在導入和當前項目之間存在名稱衝突,我想返回更新的版本。我的解決辦法是:Python - 在元組列表中比較項目
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]
和[1]在單個n返回操作?
如果這個工程的時候趕上例外,你想獲得對代碼和執行反饋,你應該把它代碼審查 – jacoblaw
我不知道這個選項,謝謝你轉發我! – nuki