gpt4 book ai didi

python - 合并字典内的列表值

转载 作者:行者123 更新时间:2023-12-01 04:59:45 25 4
gpt4 key购买 nike

我必须解决一些在 PHP 中对我来说非常简单的问题,但我不知道如何在 Python 中做到这一点。

假设我有以下字典:

data = {'year': [], 'week': [], 'value': []}

所有列表的长度始终相同,因此数据的可能值是:

{'year': ['2014', '2014', '2014'], 'week': ['44', '49', '49'], 'value': [15, 20, 30]}

我正在尝试做什么:

迭代列表“week”时:

· 如果当前周与列表中的下一周具有相同的值:

·· 用下一周覆盖该周,用下一周覆盖年份,并对具有与该周相同索引的值求和。

我期望获得什么:

所以结果是:

{'year': ['2014', '2014'], 'week': ['44', '49'], 'value': [15, 50]}

我尝试过的:

· 迭代字典,但是我对 python 的了解很差,在尝试构建 时,我遇到了诸如 object of type 'bool' has no len() 之类的错误for 循环。 (我在范围 len(dictionary.index) 中使用了 for i 的构造)

· 查看了 itertoolscollections,但我找不到任何合适的东西。

· 以逐步简单的方式进行尝试:将字典中的列表转储到另一个列表中,然后逐个比较项目,将值保存到另一个列表中,等等。

有什么想法或文档需要检查吗? (除了继续学习Python)

最佳答案

使用itertools.groupby并迭代enumerate(d['week']):

from itertools import groupby
from operator import itemgetter

d = {'year': ['2014', '2014', '2014'], 'week': ['44', '49', '49'], 'value': [15, 20, 30]}
out = {'year': [], 'week': [], 'value': []}

for k, g in groupby(enumerate(d['week']), key=itemgetter(1)):
total = 0
for i, x in g:
total += d['value'][i]
# Now `i` is the last index of the group and `x` is the last week of the group,
# We can use these to get values from 'year' and 'week'.
out['year'].append(d['year'][i])
out['week'].append(x)
out['value'].append(total)

print out
#{'week': ['44', '49'], 'value': [15, 50], 'year': ['2014', '2014']}

关于python - 合并字典内的列表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26526096/

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