在Python中编辑字典的键

时间:2015-08-21 11:59:29

标签: python dictionary

我想比较Python中两个词典的键。问题是在一个字典中,键的名称是'key1',而另一个是'key1 345',即在制表符之后有一个数字。当然Python无法匹配键,我想知道是否有任何方法可以删除制表符和数字?

感谢。

3 个答案:

答案 0 :(得分:2)

您可以使用split在任意空白处分割密钥,并使用[0]来获取第一个分段。使用dict理解来创建带有修剪键的新dict。

>>> d = {"key1\t234": "foo", "key2\t678": "bar"}
>>> {k.split()[0]: v for k, v in d.items()}
{'key1': 'foo', 'key2': 'bar'}

或者,如果您想要就地修改字典,可以尝试这样的事情:

>>> for k in d:
...     d[k.split()[0]] = d.pop(k)
>>> d
{'key1': 'foo', 'key2': 'bar'}

答案 1 :(得分:0)

首先,还有一种方法可以匹配它们;

In [1]: 'key1' in 'key1   345'
Out[1]: True

虽然你不能编辑一个字符串(Python中的字符串是不可变的),你可以删除旧的键/值对并放入一个新的。

In [2]: d = {'a': 'eggs', 'key1   345': 'spam'}

In [4]: d['key1   345']
Out[4]: 'spam'

In [5]: d['key1'] = d['key1   345']

In [6]: d
Out[6]: {'a': 'eggs', 'key1': 'spam', 'key1   345': 'spam'}

In [7]: del d['key1   345']

In [8]: d
Out[8]: {'a': 'eggs', 'key1': 'spam'}

答案 2 :(得分:0)

让我们说其他文件中的键名,你可以使用split()删除制表符和nuber

otherName = 'key1   345'
otherName = otherName.split()[0]
print otherName