python - 如何在字典中添加具有相似键的值?

标签 python

我想将 Python 字典中的值加在一起,如果它们的键以相同的字母开头..

例如,如果我有这个字典:{'apples': 3, 'oranges': 5, 'grapes': 4, 'apricots': 2, 'grapefruit': 9}

结果将是:{'A': 5,'G': 13, 'O': 5}

我只走到这一步就卡住了:

for k in dic.keys():
  if k.startswith('A'):

任何帮助将不胜感激

最佳答案

获取每个键的第一个字符,对其调用 .upper() 并用大写字母对您的值求和。下面的循环

out = {}
for key, value in original.iteritems():
    out[key[0].upper()] = out.get(key[0].upper(), 0) + value

应该这样做。

您还可以使用 collections.defaultdict() object稍微简化一下:

from collections import defaultdict:

out = defaultdict(int)
for key, value in original.iteritems():
    out[key[0].upper()] += value

或者你可以使用 itertools.groupby() :

from itertools import groupby

key = lambda i: i[0][0].upper()
out = {key: sum(v for k, v in group) for key, group in groupby(sorted(original.items(), key=key), key=key)}

关于python - 如何在字典中添加具有相似键的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18250516/

相关文章:

python - 你如何从pycharm运行nosetest?

Python PIL 编辑像素与 ImageDraw.point

python - 在 Matplotlib 3 中设置具有共享轴的物理方形子图

python - 从 ChoiceField 传递选择不接受

python - 为什么从模块中导入符号也会定义模块符号?

python - 使用Boto3启动具有IAM角色的EC2实例出现未授权操作错误

python - 将 pandas.DataFrame 转换为 Python 中的字典列表

Python 3 不适用于 NLTK 3

Python:导入错误:没有名为 'tutorial.quickstart' 的模块

python - 删除大文件中的空列