簡體   English   中英

在Python中用索引替換列表中的值

[英]Replacing Values in a List with Index in Python

我本質上想在Python中做一個Index-Match(think Excel)類型的公式,用tuple_list1中的等效值替換tuple_list中的None。

我的代碼:

tuple_list =  [("pineapple", 5), ("cherry", 7), ("kumquat", None), ("plum", None)]
tuple_list1 = [("orange, 10"),("plum", 10),("kumquat", 23)]

for item in tuple_list:
    if item[1] == None:
       item[1] = tuple_list[tuple_list1.index(item[0])][1]

print tuple_list

我的錯誤:

ValueError: 'kumquat' is not in list

所需輸出:

[("pineapple", 5), ("cherry", 7), ("kumquat", 23), ("plum", 10)]

您可能應該為此使用字典,但是如果您需要使用此數據格式,則需要過濾tuple_list1以獲取所需的數據。

tuple_list =  [("pineapple", 5), ("cherry", 7), ("kumquat", None), ("plum", None)]
tuple_list1 = [("orange", 10),("plum", 10),("kumquat", 23)]

for key, item in enumerate(tuple_list):
    if item[1] == None:
        tuple_list[key] = (item[0], [x for x in tuple_list1 if x[0] == item[0]][0][1])

print tuple_list

您的tuple_list和tuple_list1顛倒了。 折線應為:

tuple_list1[tuple_list.index(item)][1]

也不應該在項目上使用[0],您不是在尋找元組的組成部分,而是在尋找整個元組的索引

另一個問題將是您不能修改元組的元素。 他們是一成不變的。 您必須創建一個新的元組並替換舊的元組

這是一些代碼,它將執行您想要的操作:

tuple_list =  [("pineapple", 5), ("cherry", 7), ("kumquat", None), ("plum", None)]
tuple_list1 = [("orange, 10"),("plum", 10),("kumquat", 23)]

for item in tuple_list:
    if item[1] == None:
       ind = tuple_list.index(item)
       ind2 = [i for i in range(len(tuple_list1)) if tuple_list1[i][0] == item[0]][0]
       tuple_list[ind] = (item[0], tuple_list1[ind2][1])

print tuple_list

您可以遍歷tuple_listtuple_list1並篩選出一個新列表,這些列表中的所有元組都具有相同的值(索引從0到現在)。 然后將其替換為仍在迭代直到完成的新列表。

這是我的解決方案。 這將創建一個新列表。

tuple_list =  [("pineapple", 5), ("cherry", 7), ("kumquat", None), ("plum", None)]
tuple_list1 = [("orange", 10),("plum", 10),("kumquat", 23)]

tuple_list = [(v1[0], [v2 for v2 in tuple_list1 if v2[0] == v1[0]][0][1]) if v1[1] == None else v1 for v1 in tuple_list]

print tuple_list

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM