有没有办法从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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。