我有一个关于在 Python 中搜索 large 字典的效率的问题。我正在阅读一个以逗号分隔的大文件,并从每一行获取一个键和值。如果我的键已经在字典中,我将值添加到字典中列出的值,如果键不存在于字典中,我只需添加值。以前我用这个:
if key in data_dict.keys():
add values
else:
data_dict[key] = value
这开始很快,但随着字典的增长,它变得越来越慢,以至于我根本无法使用它。我将在字典中搜索键的方式更改为:
try:
# This will fail if key not present
data_dict[keyStr] = input_data[keyStr] + load_val
except:
data_dict[keyStr] = load_val
这速度无限快,可以在 3 秒内读取/写入超过 350,000 行代码。
我的问题是为什么 if key in data_dict.keys():
命令比调用 try: data_dict[keyStr]
花费的时间要长得多?为什么 Python 在字典中搜索键时不使用 try
语句?
最佳答案
问题在于,对于每个测试,您都会使用 .keys()
生成一个新的键列表。随着 key 列表变长,所需时间也会增加。还有as noted by dckrooney ,对键的搜索变成线性的,而不是利用字典的哈希表结构。
替换为:
if key in data_dict:
关于python - 高效的字典搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19103785/