python-从字典中弹出键,值对的整洁方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-从字典中弹出键,值对的整洁方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1436字,纯文字阅读大概需要3分钟。
内容图文
![python-从字典中弹出键,值对的整洁方法?](/upload/InfoBanner/zyjiaocheng/694/1fa6e03113b4420190206a68d61d40b1.jpg)
pop是一个很棒的小功能,当用在字典上(已知键)时,它会从字典中删除带有该键的项目,并返回相应的值.但是,如果我也想要钥匙怎么办?
显然,在简单的情况下,我可能可以做这样的事情:
pair = (key, some_dict.pop(key))
但是,例如,如果我想按照上述想法弹出具有最低值的键值对,则必须这样做…
pair = (min(some_dict, key=some.get), some_dict.pop(min(some_dict, key=some_dict.get)))
…这很可怕,因为我必须两次执行该操作(显然,我可以将min的输出存储在一个变量中,但是我对此并不完全满意).所以我的问题是:是否有一种优雅的方法来做到这一点?我在这里错过明显的把戏吗?
解决方法:
您可以使用python ABCs定义自己的字典对象,该对象提供了用于定义abstract base classes的基础结构.然后根据需要重载python字典对象的pop属性:
from collections import Mapping
class MyDict(Mapping):
def __init__(self, *args, **kwargs):
self.update(dict(*args, **kwargs))
def __setitem__(self, key, item):
self.__dict__[key] = item
def __getitem__(self, key):
return self.__dict__[key]
def __delitem__(self, key):
del self.__dict__[key]
def pop(self, k, d=None):
return k,self.__dict__.pop(k, d)
def update(self, *args, **kwargs):
return self.__dict__.update(*args, **kwargs)
def __iter__(self):
return iter(self.__dict__)
def __len__(self):
return len(self.__dict__)
def __repr__(self):
return repr(self.__dict__)
演示:
d=MyDict()
d['a']=1
d['b']=5
d['c']=8
print d
{'a': 1, 'c': 8, 'b': 5}
print d.pop(min(d, key=d.get))
('a', 1)
print d
{'c': 8, 'b': 5}
注意:如@chepner在注释中建议的更好的选择,您可以覆盖popitem,后者已返回键/值对.
内容总结
以上是互联网集市为您收集整理的python-从字典中弹出键,值对的整洁方法?全部内容,希望文章能够帮你解决python-从字典中弹出键,值对的整洁方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。