如果我有一个列表:
x=[1,'A',2,'B',3,'C',2,'A',1,'B']
在上面的列表中,数字和字符相关,因为A包含1,B包含2,C包含3,再次A包含2(总计3),B包含1(总计3)
如果我想查找每个字符最终包含的内容..我该怎么做
我这样做-
我最初在列表x中找到了像y=['A','B','C']
之类的字符,然后使用循环对x进行了迭代,每当在x中找到A时,我都会根据索引添加以前的值,依此类推……但有时不起作用。 / p>
答案 0 :(得分:4)
假设您希望将字典作为输出,则可以执行以下操作:
{'B': [2, 1], 'C': [3], 'A': [1, 2]}
输出
data = [1, 'A', 2, 'B', 3, 'C', 2, 'A', 1, 'B']
result = {letter: number for number, letter in zip(data[::2], data[1::2])}
print(result)
如果只想要最后一个包含 的数字,则可以使用字典理解(请参见文档here):
{'B': 1, 'C': 3, 'A': 2}
输出
data = [1,'A',2,'B',3,'C',2,'A',1,'B']
result = {}
for number, letter in zip(data[::2], data[1::2]):
result.setdefault(letter, []).append(number)
result = { letter : sum(numbers) for letter, numbers in result.items()}
print(result)
或者,如果您希望所有元素的总和,可以结合使用以上两个答案:
{'A': 3, 'B': 3, 'C': 3}
输出
{{1}}
进一步