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