繁体   English   中英

从字典键中删除空格

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM