Python 找到重复值的索引,并将这些索引位置的值添加到不同的列表中
好吧,这有点复杂。我有两张单子 清单1=[sdfd、dfd、wer、abg、cccc] 清单2=[11,3,-11,15,3]Python 找到重复值的索引,并将这些索引位置的值添加到不同的列表中,python,Python,好吧,这有点复杂。我有两张单子 清单1=[sdfd、dfd、wer、abg、cccc] 清单2=[11,3,-11,15,3] 正如您所看到的,每个list1值都有一个对应的list2值。我需要在列表1中找到重复项,然后在列表2中添加相应的数字。在这个例子中是10和-1。替换列表2中与列表1中最后出现的重复项相对应的值,因此在本例中,在列表2中插入9代替-1。然后我可以使用update构建一个字典 您可以将每个键的索引存储在列表1- string\u positions=defaultdict(
正如您所看到的,每个list1值都有一个对应的list2值。我需要在列表1中找到重复项,然后在列表2中添加相应的数字。在这个例子中是10和-1。替换列表2中与列表1中最后出现的重复项相对应的值,因此在本例中,在列表2中插入9代替-1。然后我可以使用update构建一个字典 您可以将每个
键的索引存储在列表1
-
string\u positions=defaultdict(列表)
对于i,枚举中的字符串(列表1):
字符串位置[string]。追加(i)
一旦您填充了这个,您就可以使用它并修改list2
-
用于字符串位置的索引。值()
列表2[索引[-1]]=总和(列表2[i]表示索引中的i)
迭代列表1,并在执行时跟踪dict()中的重复值:
list1 = ['asdf', 'jkl', 'asdf', 'foobar', 'bbbb']
list2 = [10, 3, -1, 17, 17]
seen = {}
for idx, item in enumerate(list1):
if val := seen.get(item):
list2[idx] += val
else:
seen[item] = list2[idx]
print(list2)
输出:
[10, 3, 9, 17, 17]
注意:Python 3.8+和:=(walrus操作符).欢迎使用SO。你有什么问题?这不是一个讨论论坛或教程。请花点时间阅读和阅读该页面上的其他链接。抱歉,我似乎不明白。您的问题是“我该如何…”而不是“我在这里做错了什么?”,因此您的问题看起来更像是:“为我编写此问题的代码。”。也就是说,我可能会使用zip函数来获取元组列表,然后在该列表中循环,边创建词典,创建词典条目或添加到它们中。足够的提示。