python - 从 defaultdict 获取原始 key 集

标签 python defaultdict

有没有办法从 defaultdict 获取原始/一致的 key 列表,即使请求的 key 不存在?

from collections import defaultdict
>>> d = defaultdict(lambda: 'default', {'key1': 'value1', 'key2' :'value2'})
>>>
>>> d.keys()
['key2', 'key1']
>>> d['bla']
'default'
>>> d.keys() # how to get the same: ['key2', 'key1']
['key2', 'key1', 'bla']

最佳答案

你必须排除。具有默认值的键!

>>> [i for i in d if d[i]!=d.default_factory()]
['key2', 'key1']

与 Jean 建议的方法的时间比较,

>>> def funct(a=None,b=None,c=None):
...     s=time.time()
...     eval(a)
...     print time.time()-s
...
>>> funct("[i for i in d if d[i]!=d.default_factory()]")
9.29832458496e-05
>>> funct("[k for k,v in d.items() if v!=d.default_factory()]")
0.000100135803223
>>> ###storing the default value to a variable and using the same in the list comprehension reduces the time to a certain extent!
>>> defa=d.default_factory()
>>> funct("[i for i in d if d[i]!=defa]")
8.82148742676e-05
>>> funct("[k for k,v in d.items() if v!=defa]")
9.79900360107e-05

关于python - 从 defaultdict 获取原始 key 集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45398212/

相关文章:

python - 将 defaultdict(list) 写入文件

python-3.x - 无法在 google-app-engine 中使用 collections.defaultdict()

python - 将 defaultdicts 的 iterable 连接到 DataFrame

python - 使用python仅计算文本文件中的每个单词一次

Python连续解析控制台输入

python - 使用 sudo 运行 Django 找不到已安装的 Homebrew 程序包

python - 如何获取自定义间隔中的最后一个日期? - Pandas

javascript - django 提供静态文件/angularJS 应用程序

python - 使用 qmark 样式参数时解决 SQL 类型名称错误?

python - 默认值为 1 的 defaultdict?