NIl*_*rma 20 python dictionary
我有一本字典
lang = {'ar':'arabic', 'ur':'urdu','en':'english'}
Run Code Online (Sandbox Code Playgroud)
我想要做的是删除除一个键以外的所有键.假设我只想在en这里保存.我该怎么做 ?(pythonic解决方案)
我尝试过:
In [18]: for k in lang:
....: if k != 'en':
....: del lang_name[k]
....
Run Code Online (Sandbox Code Playgroud)
这给了我运行时错误:RuntimeError: dictionary changed size during iteration
Fab*_*ian 27
你为什么不创建一个新的?
lang = {'en': lang['en']}
Run Code Online (Sandbox Code Playgroud)
编辑:我和jimifiki解决方案之间的基准:
$ python -m timeit "lang = {'ar':'arabic', 'ur':'urdu','en':'english'}; en_value = lang['en']; lang.clear(); lang['en'] = en_value"
1000000 loops, best of 3: 0.369 usec per loop
$ python -m timeit "lang = {'ar':'arabic', 'ur':'urdu','en':'english'}; lang = {'en': lang['en']}"
1000000 loops, best of 3: 0.319 usec per loop
Run Code Online (Sandbox Code Playgroud)
编辑2:jimifiki在评论中指出我的解决方案保持原始对象不变.
jim*_*iki 21
这很快:
En_Value = lang['en']
lang.clear()
lang['en'] = En_Value
Run Code Online (Sandbox Code Playgroud)
keys()相反迭代:
for k in lang.keys():
if k != 'en':
del lang_name[k]
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Python 3,我相信您需要使用它list(lang.keys()).
pop()它通过这样的for循环
[s.pop(k) for k in list(s.keys()) if k != 'en']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11078 次 |
| 最近记录: |