python - 删除字典中的键/值对不起作用
问题描述
我试图通过定义这样的python函数从字典中删除一些键/值对:
def removekey(d, key_list):
r = d.copy()
for h in key_list:
r.pop(h, None)
#del r[h]
return r
keys_to_delete = (0,2)
dict_a = {0: 277.8646380131756, 1: 237.68252216827375, 2: 223.04941947616766, 3: 9.058932480795093, 4: 175.74552982744078, 5: 4.834328204426816, 6: 180.5798580318676, 7: 45144.9645079669}
new_dict_a = removekey(dict_a,keys_to_delete)
问题是 new_dict_a
等于dict_a
不删除两对(0:value1)和(2:value3)。我究竟做错了什么?
解决方案
这将为您做:
def removekey(d, key_list):
r = d.copy()
for key in key_list:
r.pop(key)
return r
keys_to_delete = (0,2)
dict_a = dict_a = {0: 277.8646380131756, 1: 237.68252216827375, 2: 223.04941947616766,
3: 9.058932480795093, 4: 175.74552982744078, 5: 4.834328204426816,
6: 180.5798580318676, 7: 45144.9645079669}
new_dict_a = removekey(dict_a,keys_to_delete)
print(new_dict_a)
print(dict_a)
输出:
{1: 237.68252216827375, 3: 9.058932480795093, 4: 175.74552982744078, 5: 4.834328204426816, 6: 180.5798580318676, 7: 45144.9645079669}
{0: 277.8646380131756, 1: 237.68252216827375, 2: 223.04941947616766, 3: 9.058932480795093, 4: 175.74552982744078, 5: 4.834328204426816, 6: 180.5798580318676, 7: 45144.9645079669}
推荐阅读
- php - 我如何将 php 形式的变量传递给另一个带有 php codeigniter 参数的函数
- kubernetes - Kubernetes TLS 入口域响应 404
- azure-devops - 如何使用 VSTS 部署(和运行).NET Core ASP.NET 应用程序?
- java - 正则表达式重音java
- vcl - 从 v2013.09 升级后,TeeChart VCL TSeriesBandTool 乐队仅在鼠标移动时显示
- jquery - Select2 结果位置不正确
- angular - 在 Angular 中将样式封装的 CSS 转换为 RTL
- swift - 即使父节点在移动,如何在屏幕上给每个节点相同的起始位置?
- java - 无法模拟具有泛型参数的方法
- laravel - laravel 通知未存储到我的数据库中加上错误