Python:编辑字典键-使用Strip方法

时间:2019-10-25 03:14:45

标签: python dictionary str-replace key-value strip

我有一个字典,如下所示:

Dict = {' Chicago ': 4, ' Washington ': 9, ' LA ': 26, ' Boston ': 12, ' Seattle ': 2}

我要编辑每个条目的键,而不是值。您可以看到的键在开头和结尾处都有一个包含空格的字符串:'Chicago','Washington','LA'

我想分组并从键中删除空格。留给我下面的字典。

Dict = {'Chicago': 4, 'Washington': 9, 'LA': 26, 'Boston': 12, 'Seattle': 2}

我该怎么做?也许使用replace(" ", "")方法或strip()

尝试使用strip方法时出现错误:

AttributeError: 'int' object has no attribute 'strip'

5 个答案:

答案 0 :(得分:4)

您的错误建议您尝试转换值而不是键,但是无论如何,这应该可行:

new_dict = {key.strip(): value for key, value in old_dict.items()}

答案 1 :(得分:1)

使用dict理解:

  • 偶然地,不要使用python数据类型作为变量名(例如Dict
  • Dict Comprehension
  • 遍历字典时,可以使用key方法同时检索value和相应的.items()
  • .strip仅在key
data = {' Chicago ': 4, ' Washington ': 9, ' LA ': 26, ' Boston ': 12, ' Seattle ': 2}

data = {k.strip(): v for (k, v) in data.items()}

>>> {'Chicago': 4, 'Washington': 9, 'LA': 26, 'Boston': 12, 'Seattle': 2}

答案 2 :(得分:0)

最简单的方法是:

Dict2 = {}
for key in Dict:
   Dict2[key.strip()] = Dict[key]
Dict = Dict2

或者您可以使用理解来缓解它:

Dict = {key.strip():value for (key,value) in Dict}

答案 3 :(得分:0)

我认为最简单的方法是按如下所示循环键。我一直在对代码进行注释。

#Your dictionary
dict = {' Chicago ': 4, ' Washington ': 9, ' LA ': 26, ' Boston ': 12, ' Seattle ': 2}

#Puts all keys of the dictionary into a list
keys = list(dict)

#iterates over dictionary keys
for key in keys:

    #for every key, we make a new dictionary item with the 'stripped' key and remove the old one
    dict[key.strip()] = dict[key]
    del dict[key]

print(dict)

这为我们提供了相同的字典和相同的值,但从键中删除了前导/后缀空格:

{'Chicago': 4, 'Washington': 9, 'LA': 26, 'Boston': 12, 'Seattle': 2}

答案 4 :(得分:0)

由于字典是哈希表,因此无法直接编辑键。更改键会更改其哈希,因此您有两个概念上的选择。

第一个是替换整个字典,我认为这更像是Pythonic:

dct = {k.strip(): v for k, v in dct.items()}

或者:

dct = {k.strip(): dct[k] for k in dct}

第二个选项是保留相同的字典对象,但一一替换映射。由于您在迭代字典时不应该修改键,尤其是删除键,这使情况变得复杂。您必须先制作原始密钥的单独副本,然后使用它:

for k in list(dct):
    v = dct.pop(k)
    dct[k.strip()] = v