首页 Python python – 从defaultdict获取原始密钥集

python – 从defaultdict获取原始密钥集

有没有办法从defaultdict获取原始/一致的密钥列表,即使请求了非现有密钥? from collections import defaultdict d = defaultdict(lambda: default, {key1: value1, key2 :value2}) d.keys()[key2, key1] d[bla

有没有办法从defaultdict获取原始/一致的密钥列表,即使请求了非现有密钥?

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

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/kaifa/python/20201215/13928.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部