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

Python 如何在字典中添加具有相似键的值?,python,Python,我想将Python字典中的值相加,如果它们的键以相同的字母开头 例如,如果我有一本字典:{'apples':3'oranges':5'grapes':4'apricots':2'grapecit':9} 结果将是:{'A':5,'G':13,'O':5} 我只走了这么远,我被卡住了: for k in dic.keys(): if k.startswith('A'): 如果您有任何帮助,我们将不胜感激。请在每个键的第一个字符处调用。大写字母,然后将您的值与大写字母相加。下面的循环 out

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

例如,如果我有一本字典:{'apples':3'oranges':5'grapes':4'apricots':2'grapecit':9}

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

我只走了这么远,我被卡住了:

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

如果您有任何帮助,我们将不胜感激。

请在每个键的第一个字符处调用。大写字母,然后将您的值与大写字母相加。下面的循环

out = {}
for key, value in original.iteritems():
    out[key[0].upper()] = out.get(key[0].upper(), 0) + value
我应该这样做

您还可以使用a将其简化一点:

from collections import defaultdict:

out = defaultdict(int)
for key, value in original.iteritems():
    out[key[0].upper()] += value
或者您可以使用:


取每个键的第一个字符,调用.upper,然后用大写字母对值求和。下面的循环

out = {}
for key, value in original.iteritems():
    out[key[0].upper()] = out.get(key[0].upper(), 0) + value
我应该这样做

您还可以使用a将其简化一点:

from collections import defaultdict:

out = defaultdict(int)
for key, value in original.iteritems():
    out[key[0].upper()] += value
或者您可以使用:

您可以在此处使用:

印刷品:

defaultdict(<type 'int'>, {'A': 5, 'O': 5, 'G': 13})
您可以在此处使用:

印刷品:

defaultdict(<type 'int'>, {'A': 5, 'O': 5, 'G': 13})

有很多方法可以做到这一点。这里有一个使用计数器的变体,没有其他人提出过,与Ashwini的解决方案不同,它不会创建潜在的长中间字符串:

>>> from collections import Counter
>>> dic = {'apples': 3, 'oranges': 5, 'grapes': 4, 'apricots': 2, 'grapefruit': 9}
>>> sum((Counter({k[0].upper():dic[k]}) for k in dic), Counter())
Counter({'G': 13, 'A': 5, 'O': 5})

有很多方法可以做到这一点。这里有一个使用计数器的变体,没有其他人提出过,与Ashwini的解决方案不同,它不会创建潜在的长中间字符串:

>>> from collections import Counter
>>> dic = {'apples': 3, 'oranges': 5, 'grapes': 4, 'apricots': 2, 'grapefruit': 9}
>>> sum((Counter({k[0].upper():dic[k]}) for k in dic), Counter())
Counter({'G': 13, 'A': 5, 'O': 5})

为什么使用key[0]而不是key.startswith?@Paco:因为key.startswith是一个测试,不是获取第一个字符的方法。为什么使用key[0]而不是key.startswith?@Paco:因为key.startswith是一个测试,不是获取第一个字符的方法。