python将列表中的元素添加到字典中_python – 在词典列表中添加元素

本文探讨了如何在Python中将列表中的元素有效地添加到字典中。通过比较f1、f2和f3三个函数的性能,f2使用`collections.defaultdict`和`iteritems`,在微观基准测试中表现最佳,执行速度优于其他两个方法。f1通过`setdefault`和字典查找合并字典,而f3利用集合和生成器表达式进行合并。
摘要由CSDN通过智能技术生成

以下是一些微观基准,表明f2(见下文)可能是一种改进. f2使用iteritems,它允许你在内循环中避免额外的dict查找:

import collections

import string

import random

def random_dict():

n=random.randint(1,26)

keys=list(string.letters)

random.shuffle(keys)

keys=keys[:n]

values=[random.randint(1,100) for _ in range(n)]

return dict(zip(keys,values))

list_dictionaries=[random_dict() for x in xrange(100)]

def f1(list_dictionaries):

comb_dict = {}

for dictionary in list_dictionaries:

for key in dictionary:

comb_dict.setdefault(key, 0)

comb_dict[key] += dictionary[key]

return comb_dict

def f2(list_dictionaries):

comb_dict = collections.defaultdict(int)

for dictionary in list_dictionaries:

for key,value in dictionary.iteritems():

comb_dict[key] += value

return comb_dict

def union( dict_list ):

all_keys = set()

for d in dict_list:

for k in d:

all_keys.add( k )

for key in all_keys:

yield key, sum( d.get(key,0) for d in dict_list)

def f3(list_dictionaries):

return dict(union( list_dictionaries ))

结果如下:

% python -mtimeit -s"import test" "test.f1(test.list_dictionaries)"

1000 loops, best of 3: 776 usec per loop

% python -mtimeit -s"import test" "test.f2(test.list_dictionaries)"

1000 loops, best of 3: 432 usec per loop

% python -mtimeit -s"import test" "test.f3(test.list_dictionaries)"

100 loops, best of 3: 2.19 msec per loop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值