从字典键中删除空格

时间:2016-03-02 21:35:38

标签: python dictionary

我有一个包含键/值的字典,例如:

{'C  14': ['15263808', '13210478'], 'W   1': ['13122205']}

如何从所有键中删除空格,以便它们代替:

{'C14': ['15263808', '13210478'], 'W1': ['13122205']}

4 个答案:

答案 0 :(得分:8)

您可以处理词典理解中的所有键;您可以使用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

请注意,它们会生成 new 字典。

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兼容版本(使用Alternative to dict comprehension prior to Python 2.7):

dict((k.translate(None, ' '), v) for k, v in dictionary.iteritems())

答案 1 :(得分:4)

您也可以使用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())

答案 2 :(得分:1)

没有词汇理解:

>>> d = {'C  14': ['15263808', '13210478'], 'W   1': ['13122205']}
>>> dict(((k.replace(' ',''),v) for k,v in d.items()))
{'W1': ['13122205'], 'C14': ['15263808', '13210478']}

答案 3 :(得分:1)

这是一个没有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,以避免重新访问密钥并避免整个“迭代更改对象”问题。