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

Python:编辑字典键-使用Strip方法,python,dictionary,str-replace,key-value,strip,Python,Dictionary,Str Replace,Key Value,Strip,我有一本字典,如下所示: Dict = {' Chicago ': 4, ' Washington ': 9, ' LA ': 26, ' Boston ': 12, ' Seattle ': 2} 我想编辑每个条目的键,但不想编辑值。您可以看到的键有一个字符串,在开始和结束处包含空格:“芝加哥”、“华盛顿”、“洛杉矶” 我想分组并去掉键上的空白。把下面的字典留给我 Dict = {'Chicago': 4, 'Washington': 9, 'LA': 26, 'Boston': 12, '

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

Dict = {' Chicago ': 4, ' Washington ': 9, ' LA ': 26, ' Boston ': 12, ' Seattle ': 2}
我想编辑每个条目的键,但不想编辑值。您可以看到的键有一个字符串,在开始和结束处包含空格:“芝加哥”、“华盛顿”、“洛杉矶”

我想分组并去掉键上的空白。把下面的字典留给我

Dict = {'Chicago': 4, 'Washington': 9, 'LA': 26, 'Boston': 12, 'Seattle': 2}
我该怎么做?可能使用
replace(“,”)
方法或
strip()

尝试剥离方法时,我得到错误:

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

最简单的方法是:

Dict2 = {}
for key in Dict:
   Dict2[key.strip()] = Dict[key]
Dict = Dict2
或者你也可以用理解来缓解它:

Dict = {key.strip():value for (key,value) in Dict}
使用
dict
理解:
  • 顺便说一句,不要使用python数据类型作为变量的名称(例如,
    Dict
  • 在字典中循环时,可以使用
    .items()
    方法同时检索
    和相应的
  • 仅在
    键上
data={“芝加哥”:4,“华盛顿”:9,“洛杉矶”:26,“波士顿”:12,“西雅图”:2}
data={k.strip():v代表data.items()中的(k,v)
>>>{“芝加哥”:4,“华盛顿”:9,“洛杉矶”:26,“波士顿”:12,“西雅图”:2}

您的错误表明您试图转换值而不是键,但无论如何,这应该可以:

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

我认为最简单的方法是循环键,如下所示。我已经对代码进行了注释

#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}

不能直接编辑键,因为字典是哈希表。更改键会更改其散列,因此您有两个概念性选项

第一个是替换整本字典,在我看来,这本字典更像是python:

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

dct = {k.strip(): dct[k] for k in dct}
第二种选择是保留相同的dictionary对象,但逐个替换映射。这是复杂的,因为您不应该在遍历字典时修改键,尤其是删除键。您必须先制作原始钥匙的单独副本,然后使用:

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

Python中可能存在重复的变量,我们将变量命名为
lowercase\u,带下划线
。大写的变量名用于类。此外,
dict
是一个保留字,你可以使用
字典或
我的dict
是的,但我试图符合他的习惯。。。谢谢你给我的提示,下次我会记得的