python如何删除项目,从Python字典中删除项目的最佳方式?

What is the best way to remove an item from a dictionary when the item's key is unknown? Here's a simple approach:

for key, item in some_dict.items():

if item is item_to_remove:

del some_dict[key]

Are there better ways? Is there anything wrong with mutating (deleting items) from the dictionary while iterating it?

解决方案

Be aware that you're currently testing for object identity (is only returns True if both operands are represented by the same object in memory - this is not always the case with two object that compare equal with ==). If you are doing this on purpose, then you could rewrite your code as

some_dict = {key: value for key, value in some_dict.items()

if value is not value_to_remove}

But this may not do what you want:

>>> some_dict = {1: "Hello", 2: "Goodbye", 3: "You say yes", 4: "I say no"}

>>> value_to_remove = "You say yes"

>>> some_dict = {key: value for key, value in some_dict.items() if value is not value_to_remove}

>>> some_dict

{1: 'Hello', 2: 'Goodbye', 3: 'You say yes', 4: 'I say no'}

>>> some_dict = {key: value for key, value in some_dict.items() if value != value_to_remove}

>>> some_dict

{1: 'Hello', 2: 'Goodbye', 4: 'I say no'}

So you probably want != instead of is not.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值