如何更改Python字典中条目的键?
当前回答
以防一次换了所有的钥匙。 我在这里阻塞钥匙。
a = {'making' : 1, 'jumping' : 2, 'climbing' : 1, 'running' : 2}
b = {ps.stem(w) : a[w] for w in a.keys()}
print(b)
>>> {'climb': 1, 'jump': 2, 'make': 1, 'run': 2} #output
其他回答
只需2步即可轻松完成:
dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]
或者一步:
dictionary[new_key] = dictionary.pop(old_key)
如果字典[old_key]未定义,将引发KeyError。注意,这将删除字典[old_key]。
>>> dictionary = { 1: 'one', 2:'two', 3:'three' }
>>> dictionary['ONE'] = dictionary.pop(1)
>>> dictionary
{2: 'two', 3: 'three', 'ONE': 'one'}
>>> dictionary['ONE'] = dictionary.pop(1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 1
因为键是字典用来查找值的,所以实际上不能更改它们。您可以做的最接近的事情是保存与旧键相关联的值,删除它,然后使用替换键和保存的值添加一个新条目。其他几个答案说明了实现这一目标的不同方式。
用下划线替换字典键中的空格,我使用这个简单的路由…
for k in dictionary.copy():
if ' ' in k:
dictionary[ k.replace(' ', '_') ] = dictionary.pop(k, 'e r r')
或者只是dictionary。pop(k)注意'e r r',它可以是任何字符串,如果键不在字典中,就会成为新的值,从而能够替换它,这在这里不可能发生。参数是可选的,在其他类似的代码中,KeyError可能会被击中,添加的arg会避免它,但可以创建一个新的键'e rr '或任何你设置的值。
.copy()避免…字典在迭代过程中改变了大小。
.keys()不需要,k是每个键,k在我的头脑中代表键。
(我使用v3.7)
关于字典pop()的信息
上面循环的一行代码是什么?
这个函数获得一个字典,另一个字典指定如何重命名键;它返回一个新的字典,带有重命名的键:
def rekey(inp_dict, keys_replace):
return {keys_replace.get(k, k): v for k, v in inp_dict.items()}
测试:
def test_rekey():
assert rekey({'a': 1, "b": 2, "c": 3}, {"b": "beta"}) == {'a': 1, "beta": 2, "c": 3}
您可以将相同的值与许多键相关联,或者只是删除一个键并重新添加具有相同值的新键。
例如,如果你有键->值:
red->1
blue->2
green->4
没有理由不能添加紫色->2或删除红色->1并添加橙色->1
推荐文章
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 每n行有熊猫
- 实例属性attribute_name定义在__init__之外
- 如何获取在Python中捕获的异常的名称?
- 第一次出现的值大于现有值的Numpy
- 如何从Python函数中返回两个值?
- 前一个月的Python日期
- Python中方括号括起来的列表和圆括号括起来的列表有什么区别?
- Python日志记录不输出任何东西
- 每n秒运行特定代码
- SQLAlchemy是否有与Django的get_or_create等价的函数?
- 如何将python datetime转换为字符串,具有可读格式的日期?
- 美丽的汤和提取div及其内容的ID
- 在Python中重置生成器对象
- 用Python构建最小的插件架构