python字典的内置函数_python – 用于字典转换的特殊方法名称的内置函数
我一直在深入研究Python类中的运算符重载和特殊方法,并且我注意到许多内置函数具有等效的特殊方法名称:
> int(x)调用x .__ int __()
> next(x)在Python 2中调用x .__ next __()或x.next()
但是,一些函数,即tuple()和dict(),没有任何等价物.我知道对于这种特殊方法尚未出现这种需要,但在某些情况下,调用类的dict()转换方法可能很有用.我该如何实现呢?或者,对于试图使用这种逻辑的人,您会怎么说?
# I think this is quite interesting, so I shall post my own implementation of it as well
解决方法:
选项1:__iter__
转换为元组或字典,或任何采用迭代的类型,都依赖于__iter__方法.
class ListOfKeys():
def __init__(self, lst):
self.lst = lst
def __iter__(self):
for k in self.lst:
yield (k, None)
lok = ListOfKeys([1, 2, 3])
d = dict(lok)
print(d) # {1: None, 2: None, 3: None}
这同样适用于元组.
t = tuple(lok)
print(t) # ((1, None), (2, None), (3, None))
选项2:键和__getitem__
或者,要转换为dict,您可以实现两个键和__getitem__.
class ListOfKeys():
def __init__(self, lst):
self.lst = lst
def keys(self):
yield from self.lst
def __getitem__(self, item):
return None
lok = ListOfKeys([1, 2, 3])
d = dict(lok)
print(d) # {1: None, 2: None, 3: None}
选项3:两者都支持多种类型
最后,如果您希望您的类具有不同的行为以转换为dict和元组,则以下示例演示dict将优先考虑键和__getitem__解决方案.
class Foo:
def __iter__(self):
yield 1
def keys(self):
yield 2
def __getitem__(self, item):
return 3
print(dict(Foo())) # {2: 3}
print(tuple(Foo())) # (1,)
标签:python,python-3-x,class,function,oop
来源: https://codeday.me/bug/20190828/1746542.html
python字典的内置函数_python – 用于字典转换的特殊方法名称的内置函数相关推荐
- [转载] [转载] python 去除字符串的标点符号 用_Python成为专业人士笔记–String字符串方法
参考链接: Python字符串| 十六进制 hexdigits 参考链接: Python的字符串Strings decode "专业人士笔记"系列目录: 创帆云:Python成为专 ...
- [转载] python 去除字符串的标点符号 用_Python成为专业人士笔记–String字符串方法
参考链接: Python的字符串Strings decode "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.z ...
- SQL语句行列转换两种方法 case ...when 和pivot函数应用
2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...
- python内置数字类型转换函数_Python学习 Day2-2 Python3的基本数据类型、数据内置类型转换函数...
Python3的基本数据类型 Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型& ...
- python 常用内置函数_Python小白必备的8个最常用的内置函数(推荐)
Python给我们内置了大量功能函数,官方文档上列出了69个,有些是我们是平时开发中经常遇到的,也有一些函数很少被用到,这里列举被开发者使用最频繁的8个函数以及他们的详细用法 print() prin ...
- python修改列表中字典内的值_python修改字典内key对应值的方法
python学习笔记:字典 python版本:Python 2.6.6 系统环境:CentOS release 6.2 x86_64 本文参考了互联网上前辈的一些文章 一.字典是python中最灵活的 ...
- python setdefault函数_python中字典中的赋值技巧,update批量更新、比较setdefault方法与等于赋值...
知识回顾: 之前这节主要学习了字典的删除,主要涉及到两个方法: 1. Pop方法:删除指定的键的键值对.需要指定一个自己已知的键,删除后返回的是键对应的值. 2. Popitem方法:删除的是最后一个 ...
- python拷贝文件函数_python笔记2小数据池,深浅copy,文件操作及函数初级
小数据池就是在内存中已经开辟了一些特定的数据,经一些变量名直接指向这个内存,多个变量间公用一个内存的数据. int: -5 ~ 256 范围之内 str: 满足一定得规则的字符串. 小数据池: 1,节 ...
- python导入自己写的函数_Python导入模块的几种方法
Python 模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代 ...
最新文章
- Flask学习之路(一)--初识flask
- linux发行版 以及 包管理方式
- python每隔2s执行一次hello world!
- 虫洞协议和闪电网络如何混为一谈?
- perl5 第九章 关联数组/哈希表
- 如何通过网络连接进行ADB调试
- docker compose 在单机环境下一键打包运行
- 16个简单实用的.htaccess技巧
- 3d文件与html结合,js和HTML5怎么结合?
- 带你梳理Roach全量恢复的整体流程
- Parts of a URL
- vue + vant 使用阿里图标库
- DFS----深度优先搜索与记忆化数组例题分析
- html好看的详情页面设计,40多个漂亮的网页表单设计实例
- 用药安全,从娃娃抓起
- 惠不停返利网:掀起购物返利高潮
- 高度可定制可用于商用目的全流程供应链系统(全部源码)
- Unity3D FPS射击游戏
- unity碰撞检测的几种函数
- Windows安装RabbitMQ
热门文章
- 从Kubernetes安全地访问AWS服务,告诉你多云场景下如何管理云凭据!
- 以人为本、用“简”驭“繁”……统统都是新华三物联网的关键词儿!
- php error_get_last(),PHP捕获异常register_shutdown_function和error_get_last的使用
- python 下载图片到内存卡_python - 获取图像大小而不将图像加载到内存中
- linux bash环境,Win10系统怎样启用Linux Bash环境
- pyside2 镜像安装_pyside2 镜像安装_【PySide2学习笔记】0_下载安装
- android 模拟器声音设置,使用android模拟器录制声音
- nginx(windows环境安装)
- 开发经验分享_05_葫芦画瓢
- The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.