gpt4 book ai didi

python - 我如何比较列表中元组中的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:37 26 4
gpt4 key购买 nike

我有这个元组列表[(amount, name)]:

[(214.05, 'Charlie'), (153.57, 'Ben'),(213.88, 'Charlie')]

我试图通过它们的名称比较它们,如果有一个具有相同名称的元组,我想将数量加在一起。

输出将进入另一个具有相同结构[(amount,name)]的列表。

我设法用这个提取名称部分:

for i in range(0, len(spendList)):
print(spendList[i][1])

输出:

Charlie
Ben
Charlie

如何比较名称?

最佳答案

执行此类操作的一种方法是使用 dict.setdefault()喜欢:

代码:

data = [(214.05, 'Charlie'), (153.57, 'Ben'), (213.88, 'Charlie')]
summed = {}
for amount, name in data:
summed.setdefault(name, []).append(amount)
summed = [(sum(amounts), name) for name, amounts in summed.items()]
print(summed)

这是如何运作的?

  1. 首先定义一个 dict 对象 来累积每个名字的金额。

     summed = {}
  2. 遍历每对金额和名称:

     for amount, name in data:
  3. 使用 dict 属性,散列相同的内容将在 dict 中的相同位置结束,dict 方法:setdefault()为了确保 dict 对我们遇到的每个名字都有一个空列表,请为每个名字创建一个金额列表:

     summed.setdefault(name, []).append(amount)

    这会创建一个列表字典,例如:

     {'Charlie': [214.05, 213.88], 'Ben': [153.57]}
  4. 终于使用了 comprehension我们可以sum() 将所有具有相同名称的项目相加。

     summed = [(sum(amounts), name) for name, amounts in summed.items()]

结果:

[(427.93, 'Charlie'), (153.57, 'Ben')]

关于python - 我如何比较列表中元组中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48358326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com