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

2024-05-03 08:01:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我基本上想在Python中使用一个索引匹配(比如Excel)类型的公式,用tuple\u list中的等价值替换tuple\u 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)]

Tags: 代码innone类型itemexcellist公式
3条回答

你的元组列表和元组列表1颠倒了。断裂线应为:

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_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_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

相关问题 更多 >