[英]Remove space from dictionary keys
我有一个带键/值的字典,例如:
{'C 14': ['15263808', '13210478'], 'W 1': ['13122205']}
如何从所有键中删除空格,以便它们可以是:
{'C14': ['15263808', '13210478'], 'W1': ['13122205']}
您可以在字典理解中处理所有键; 你可以使用str.translate()
删除空格; Python 2的版本是:
{k.translate(None, ' '): v for k, v in dictionary.iteritems()}
而Python 3版本是:
{k.translate({32: None}): v for k, v in dictionary.items()}
您还可以使用str.replace()
删除空格:
{k.replace(' ', ''): v for k, v in dictionary.items()}
但对于更长的键,这可能会更慢; 请参阅Python str.translate VS str.replace
请注意,这些产生了一个新字典。
Python 2上的演示:
>>> d = {'C 14': ['15263808', '13210478'], 'W 1': ['13122205']}
>>> {k.translate(None, ' '): v for k, v in d.iteritems()}
{'W1': ['13122205'], 'C14': ['15263808', '13210478']}
和2.6兼容的版本( 在Python 2.7之前使用替代dict理解 ):
dict((k.translate(None, ' '), v) for k, v in dictionary.iteritems())
你也可以使用str.replace
:
In [4]: d = {'C 14': ['15263808', '13210478'], 'W 1': ['13122205']}
In [5]: d = {k.replace(" ",""): v for k,v in d.items()}
In [6]: d
Out[6]: {'C14': ['15263808', '13210478'], 'W1': ['13122205']}
对于python2.6:
d = dict((k.replace(" ",""),v) for k,v in d.items())
没有字面理解:
>>> d = {'C 14': ['15263808', '13210478'], 'W 1': ['13122205']}
>>> dict(((k.replace(' ',''),v) for k,v in d.items()))
{'W1': ['13122205'], 'C14': ['15263808', '13210478']}
这是一个没有dict
理解的解决方案,可以就地编辑字典,并假设没有两个旧密钥映射到同一个新密钥。
d = {'C 14': ['15263808', '13210478'], 'W 1': ['13122205']}
for key in d.keys():
if ' ' in key:
d[key.translate(None, ' ')] = d[key]
del d[key]
print d # {'W1': ['13122205'], 'C14': ['15263808', '13210478']}
经过一段时间后,这比创建新词典快25%左右。
在循环迭代d.keys()
而不是d
直接以避免重新审视键和避免“过度变化的对象迭代”的问题全。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.