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
是的,但我试图符合他的习惯。。。谢谢你给我的提示,下次我会记得的