社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Eli Harold Dan Green

Eli Harold Dan Green 最近创建的主题
Eli Harold Dan Green 最近回复了
3 年前
回复了 Eli Harold Dan Green 创建的主题 » python:如果共享第一个单词,则对列表中的值求和

一种可能的方法是:

import pandas as pd
    
flat_list = ['hello,5', 'mellow,4', 'mellow,2', 'yellow,2', 'yellow,7', 'hello,7', 'mellow,7', 'hello,7']
new_list = [v.split(',') for v in flat_list]
    
df = pd.DataFrame(new_list)
df[1] = df[1].astype(int)
df2 = df.groupby(0).sum()
print(df2)

输出:

    0        1
    hello   19
    mellow  13
    yellow   9
3 年前
回复了 Eli Harold Dan Green 创建的主题 » python:如果共享第一个单词,则对列表中的值求和

您可以非常简单地执行此操作,而无需导入其他模块,如:

t = ['hello,5', 'mellow,4', 'mellow,2', 'yellow,2', 'yellow,7', 'hello,7', 'mellow,7', 'hello,7']

d = {}
for s in t: #for each string
    w, n = s.split(',') #get the string and the number
    d[w] = d[w] + int(n) if w in d.keys() else int(n) #add the number (sum)

l = list(d.items()) #make the result a list of tuples
print(output)

输出:

[('hello', 19), ('mellow', 13), ('yellow', 9)]
3 年前
回复了 Eli Harold Dan Green 创建的主题 » python:如果共享第一个单词,则对列表中的值求和

下面是一个变体,用于使用 defaultdict :

from collections import defaultdict

t = ['hello,5', 'mellow,4', 'mellow,2', 'yellow,2',
     'yellow,7', 'hello,7', 'mellow,7', 'hello,7']

count = defaultdict(int)

for name_number in t:
    name, number = name_number.split(",")
    count[name] += int(number)

你也可以使用 Counter :

from collections import Counter

count = Counter()

for name_number in t:
    name, number = name_number.split(",")
    count[name] += int(number)

在这两种情况下,您都可以将输出转换为 list 属于 tuple s使用:

list(count.items())
# -> [('hello', 19), ('mellow', 13), ('yellow', 9)]

我运行了你的代码,得到了正确的结果(尽管不是你想要的格式)。