use*_*486 2 python dictionary python-2.7
我有一个python字典,看起来像这样;
{'Prefix_1':'12', 'Prefix_2':'11', 'Prefix_3':'14', '1':'241', '2':'312', '3':'421'
}
Run Code Online (Sandbox Code Playgroud)
我想删除那些带有以'Prefix'开头的键的键值对.结果应该是一个看起来像这样的字典;
{'1':'241', '2':'312', '3':'421'
}
Run Code Online (Sandbox Code Playgroud)
我目前这样做的方法是逐个删除每一对del dictionary['Prefix_X'].有什么更有效的方法呢?
我正在使用python 2.7
由于其他答案都使用dict理解来创建一个新的dict并且保持原始dict不变,我将给出一个改变dict的地方:
for k in d.keys():
if k.startswith('Prefix'):
d.pop(k)
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
假设字典中有N个键,要查找具有给定前缀的所有键,您必须迭代所有键,这具有O(N)时间复杂度.
然后你需要逐个删除它们,在最坏的情况下,所有这些都使用给定的前缀,所以这也是O(N)时间复杂度.
O(N)的总时间复杂度.
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |