Python 从列表列表中获取总计并将其应用于词典

Python 从列表列表中获取总计并将其应用于词典,python,Python,我有一个列表,如下所示: [['blah', 5], ['blah', 6], ['blah',7], ['foo', 5], ['foo', 7]] 我想做的是创建一个字典列表,其中列表的第一个索引是关键字,第二个是运行总数 最终结果需要如下所示: [{'name': 'blah', 'total': 18}, {'name': 'foo', 'total': 12}] 我会在这里使用一个计数器: from collections import Counter res = Counter

我有一个列表,如下所示:

[['blah', 5], ['blah', 6], ['blah',7], ['foo', 5], ['foo', 7]]
我想做的是创建一个字典列表,其中列表的第一个索引是关键字,第二个是运行总数

最终结果需要如下所示:

[{'name': 'blah', 'total': 18}, {'name': 'foo', 'total': 12}]

我会在这里使用一个计数器:

from collections import Counter

res = Counter()
for k, v in data:
    res.update({k: v})

print(res)
输出:

Counter({'blah': 18, 'foo': 12})
[{'total': 18, 'name': 'blah'}, {'total': 12, 'name': 'foo'}]
但如果您确实想要您要求的输出:

final = [{'name': k, 'total': v} for k, v in res.items()]
print(final)
输出:

Counter({'blah': 18, 'foo': 12})
[{'total': 18, 'name': 'blah'}, {'total': 12, 'name': 'foo'}]

我会在这里使用一个计数器:

from collections import Counter

res = Counter()
for k, v in data:
    res.update({k: v})

print(res)
输出:

Counter({'blah': 18, 'foo': 12})
[{'total': 18, 'name': 'blah'}, {'total': 12, 'name': 'foo'}]
但如果您确实想要您要求的输出:

final = [{'name': k, 'total': v} for k, v in res.items()]
print(final)
输出:

Counter({'blah': 18, 'foo': 12})
[{'total': 18, 'name': 'blah'}, {'total': 12, 'name': 'foo'}]

您可以使用
reduce
对所有元素进行迭代并将其汇总:

from functools import reduce

lists = [['blah',5],['blah',6],['blah',7],['foo',5],['foo',7]]

def count(total, item):
  key, val = item[0], item[1]
  if key not in total:
    total[key] = 0 
  total[key] += val 
  return total

totals = reduce(count, lists, {}) 
print(totals)

您可以使用
reduce
对所有元素进行迭代并将其汇总:

from functools import reduce

lists = [['blah',5],['blah',6],['blah',7],['foo',5],['foo',7]]

def count(total, item):
  key, val = item[0], item[1]
  if key not in total:
    total[key] = 0 
  total[key] += val 
  return total

totals = reduce(count, lists, {}) 
print(totals)

您是否尝试过编写此代码?你能展示一下你的尝试并解释一下什么不适合你吗?你有没有尝试过编码?你能展示一下你的尝试并解释一下什么不适合你吗?非常感谢!老实说,我从来没有想过使用收藏,这是我的愚蠢。你的回答正是我需要的。非常感谢!老实说,我从来没有想过使用收藏,这是我的愚蠢。你的回答正是我需要的。