python 如何将编码为字符串的列表元素与数字相加[已关闭]

olqngx59  于 2023-01-29  发布在  Python
关注(0)|答案(1)|浏览(135)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

昨天关门了。
社区正在审查是否从昨天开始重新讨论这个问题。
Improve this question
有一个重复单词元素的列表,末尾有一个数字。我想对重复的数字求和,删除重复的单词,并打印数字之和的单词,但我不知道如何...
输入:

a = ["mango3", "apple2", "kiwi1", "kiwi2", "mango2"]

输出:

mango5
apple2
kiwi3
8i9zcol2

8i9zcol21#

这里有一个解决方案,首先使用regex拆分列表元素中的fruit/numbers,构建fruit:total_number对的字典,最后从字典中重新创建一个列表:

import re
a=["mango3","apple2","kiwi1","kiwi2","mango2"]
b={}
for element in a:
    fruit, number = re.findall('\D+',element)[0], re.findall('\d+', element)[0]
    b[fruit] = b.get(fruit,0) + int(number)
c=[fruit + str(number) for fruit,number in b.items()]

print(c)
# ['mango5', 'apple2', 'kiwi3']

关于正则表达式的解释:\d代表数字,所以\d+将返回(在只有一个数字序列的情况下)最长的数字序列(至少1个);类似地,\D表示非数字。
注意,你可以用一个正则表达式来捕捉组:

fruit, number = re.findall('(\D+)(\d+)', element)[0]

相关问题