我想知道你们是否可以给我一些关于使我的代码性能更好的建议.
我有一组for循环,它们查看一个键是否在一个字典中,其值是一个列表,如果该键存在,它会附加到列表中,如果它没有,它会为该键添加一个新列表
dict={}
for value in value_list:
if value.key in dict.keys():
temp_list = dict[value.key]
temp_list.append(value.val)
dict[value.key] = temp_list
else:
dict[value.key] = [value.val]
Run Code Online (Sandbox Code Playgroud)
现在这段代码工作正常,但是随着字典开始填充行值,dict.keys()中的key变得越来越麻烦.
有没有更好的方法呢?
谢谢,
麦克风
Gle*_*ard 42
不要这样做:
value.key in dict.keys()
Run Code Online (Sandbox Code Playgroud)
那 - 在Python 2中,至少 - 创建一个包含每个键的列表.随着字典变大,这变得越来越昂贵,并且在列表上执行O(n)搜索以找到密钥,这违背了使用字典的目的.
相反,只需:
value.key in dict
Run Code Online (Sandbox Code Playgroud)
它不会创建临时列表,并且会对键进行哈希表查找而不是线性搜索.
setdefault如其他地方所述,这是更清洁的方法,但理解上述内容非常重要.
| 归档时间: |
|
| 查看次数: |
15851 次 |
| 最近记录: |