我有一个包含键/值的字典,例如:
{'C 14': ['15263808', '13210478'], 'W 1': ['13122205']}
如何从所有键中删除空格,以便它们代替:
{'C14': ['15263808', '13210478'], 'W1': ['13122205']}
答案 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
,以避免重新访问密钥并避免整个“迭代更改对象”问题。