dict.keys()中的python键表示大型词典

Wer*_*rda 10 python

我想知道你们是否可以给我一些关于使我的代码性能更好的建议.

我有一组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如其他地方所述,这是更清洁的方法,但理解上述内容非常重要.