python - 从嵌套字典中删除键和值?
问题描述
我有一个这样的嵌套字典:
book={20:{'start':'2008','reason':'sold'},
21:{'start':'2009','reason':'returned'},
22:{'start':'2010','reason':'returned'}}
我想删除 'reason'== 'sold' 的项目。
输出应该是这样的:
book={21:{'start':'2009','reason':'returned'},
22:{'start':'2010','reason':'returned'}}
这是我的代码不起作用:
for k, v in book:
if v == 'sold':
del book[k]
解决方案
您可以使用字典理解:
book={20:{'start':'2008','reason':'sold'},
21:{'start':'2009','reason':'returned'},
22:{'start':'2010','reason':'returned'}}
new_book = {a:b for a, b in book.items() if b['reason'] != 'sold'}
输出:
{21: {'start': '2009', 'reason': 'returned'}, 22: {'start': '2010', 'reason': 'returned'}}
推荐阅读
- android - 验证设备屏幕上的文本和按钮是否中断的工具的问题
- python-3.x - 我为 pygame 程序创建的可执行文件不起作用
- php - 是否可以在存储过程参数中传递多个输入值?
- excel - 使用 VBA 从雅虎财务中检索数据(资产负债表而不是股票)
- assembly - 具体的汇编命令函数
- javascript - 如何在赛普拉斯快照测试中处理时区?
- android - 房间数据库:创建新的 RecyclerView 项目后两次获取 SELECT MAX()
- mongoose - Mongoose schema "this" keyword returns undefined
- java - How do I get data into a constructor from two different loops
- python - Why won't Python's socket.recv() return -1