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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

合并相同数据的行_R语言笔记(六):数据框重塑(reshape2)

数据处理主要内容包括:1. 特殊值处理1.1 缺失值1.2 离群值1.3 日期2. 数据转换(base vs. dplyr)2.1 筛选(subset vs. filter/select/rename)2.2 排序(order vs. arrange)2.3 转换(tr…

华为交换机s2700怎么重置_华为交换机忘记console的密码,怎么恢复出厂设置

展开全部1、启动时,32313133353236313431303231363533e58685e5aeb931333366303064按CtrlB进入BOOTROM目录2、输入BOOTROM的密码盒式交换机的某些款型支持使用快捷键“CtrlE”进入BootROM主菜单,请根据设备的界面提示操作。盒式交换机在V100R006C03之前的…

启动linux_使用 UEFI 双启动 Windows 和 Linux | Linux 中国

这是一份在同一台机器上设置 Linux 和 Windows 双重启动的速成解释,使用统一可扩展固件接口(UEFI)。来源:https://linux.cn/article-12891-1.html作者:Alan Formy-duval译者:郑(本文字数&#x…

域控下发脚本_域用户登陆脚本

如何为一个域用户设置登陆脚本?- BAT可否作为登陆脚本?- 在域用户“属性”中,应如何指定登陆脚本名?"D:\x.bat"还是"\\srv\x.bat"?还是其它?- 脚本应该放在何处?- 还有没有…

mysql增量脚本_mysql全量和增量备份脚本

全量:[rootmaster leo]# cat DBfullBak.sh#!/bin/bash#use mysqldump to fully backup mysql dataBakDir/root/leo/fullLogFile/root/leo/full/bak.logDatedate %Y%m%dBegindate "%Y年%m月%d日 %H:%M:%S"cd $BakDirDumpFile$Date.sqlGZDumpFile$Date.sql.…

mysql 事务 引擎_mysql引擎和事务

对于应用程序和用户来说,同样一张表的数据无论用什么引擎来存储,看到的数据都是一样的,只是不同的引擎在功能、占用空间大小、读取性能等方面可能有所差别。mysql最常用的存储引擎为Innodb、MyISAM和全文索引5.5.5以前默认存储引擎为MyISAM&a…

shell mysql eof_shell EOF

1、考虑下面的需求&#xff0c;在主shell执行命令&#xff0c;进入其他的命令&#xff0c;后面的输入&#xff0c;想作为命令的输入&#xff0c;而不是主shell的输入&#xff0c;怎么办&#xff1f;2、使用<3、这里的EOF只是分界符&#xff0c;使用其他的字符也可以。4、比如…

MySQL查询实验报告_实验报告数据库的基本查询'

《实验报告数据库的基本查询》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《实验报告数据库的基本查询(5页珍藏版)》请在人人文库网上搜索。1、一、实验目的&#xff1a;通过该实验掌握应用SQL 查询数据库的基本方法&#xff0c;包括单表、多表查询。二、实验原理数…

mysql+odbc+ado_MFC ado+mysql+odbc技术分享

第一步&#xff1a;建立数据库假设有一个sql文件mysql>use dbname; //创建一个数据库名为dbname的数据库(空数据库)mysql>set names utf8; //编码&#xff0c;mysql>source D:/dbname.sql; //导入一个数据库源文件创建数据库内容我做…

mysql 5.7 window x64_window环境配置Mysql 5.7.21 windowx64.zip免安装版教程详解

1.从官网下载mysql-5.7.21-windowx64.zip mysql下载页面2.解压到合适的位置(E:mysql) 这名字是我改过的3.配置环境变量&#xff0c;将E:mysqlbin 添加到PATH中4.在mysql目录下(E:mysql) 创建 my.ini文件&#xff0c;内容如下&#xff1a;[mysql]# 设置mysql客户端默认字符集def…

mysql设置查询结果最大值_查找MySQL查询结果字段的最大值

将它连接到仅有最大计数的第二个查询。每天最内部查询(对于给定用户)每天计数的一组行数。从那以后&#xff0c;下一个外部执行从该集合中选择MAX()来查找并获得一个代表最高日数的记录...因为它总是返回一行&#xff0c;并且加入到原始的numRequest表中它将是一个笛卡尔&#…

MySQL建表两个单引号报错_极客起源 - geekori.com - 问题详情 - mysql建表报错,查手册看不懂,求解?...

创建带索引的数据库表需要为表名和属性添加反单引号&#xff0c;并且你当前的primary key的位置需要调整一下&#xff1a;create table abc(id int unsigned auto_increment,usename char(20) not null default ,gender char(1) not null default ,weight tinyint unsigned not…

js 用下标获取map值_javascript怎么获取map的值?

Map对象保存键/值对&#xff0c;是键/值对的集合。任何值(对象或者原始值) 都可以作为一个键或一个值。Object结构提供了“字符串—值”的对应&#xff0c;Map结构提供了“值—值”的对应。JavaScript获取map值示例&#xff1a;map对象如下&#xff1a;var mapObject {id1001:…

python attention机制_从零开始学Python自然语言处理(26)—— 强大的Attention机制...

前文传送门&#xff1a;在上一次面试失利后&#xff0c;我回来仔细研究了一下Attention机制&#xff0c;研究完我不禁感悟&#xff0c;这机制真的厉害啊&#xff01;因为我之前面试被问到的Encoder - Decoder框架中有个瓶颈是编码的结果以固定长度的中间向量表示&#xff0c;这…

[机器人-2]:开源MIT Min cheetah机械狗设计(二):机械结构设计

目录 1、四肢朝向的选择 2、电机布局形式的选择 3、电机的选型及测试&#xff08;非常重要&#xff09; 4、结构优化 5、尺寸效应 6、其他 1、四肢朝向的选择 机械狗的结构设计&#xff0c;第一个摆在我们面前的就说四肢的朝向问题&#xff0c;如下图&#xff0c;我们是…

python传文件给java_用java pyhont通过HTTP协议传输文件流

// 代码网上抄的 忘记链接了 抱歉哈packageupload;importjava.io.BufferedReader;importjava.io.DataOutputStream;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.net.HttpURLConnection;im…

mysql挪到小数点位置_mysql数据库迁移到另一个硬盘上

archliun系统mysql数据库1、对新硬盘分区与格式化1)# fdisk /dev/sdb2) # mkfs.ext4 /dev/sdb12、停止MYSQL服务systemctl stop mysqld3、对数据库文件拷贝# cp -Rp data /mnt/data/4、删除原data文件# rm -rf /data5、禁止开机自启MYSQL服务# systemctl disable mysqld6、对自…

mysql用户权限表join_MyBatis映射利用mysql left join 解决N+1查询问题

1.权限是几乎每个系统都需要的2.一般在用户请求某个url的时候&#xff0c;都需要验证用户是否拥有该url的访问权限3.最简单的权限系统需要 用户表&#xff0c;角色表&#xff0c;用户角色表&#xff0c;权限表&#xff0c;角色权限表# Host: 127.0.0.1 (Version: 5.6.22)# Date…

python 爬取贝壳网小区名称_如何使用 python 爬取全国小区名称

前言笔者在做一个 NLPNLPNLP 项目时&#xff0c;需要识别小区名&#xff0c;因此想要查询网上是否有相关的数据集。经过一番搜索后一无所获…从而决定自己来爬取这份数据。由于爬取网站的内容信息之后可能会发生变更&#xff0c;因此此处给出具体的爬虫思路&#xff0c;便于应对…

mysql hint 简书_MySQL

为满足不同数据库设计要求&#xff0c;减少数据冗余而指定设计规范&#xff0c;可称为数据库范式数据库范式呈递次规范&#xff0c;即高阶范式必然满足低阶范式越高的数据库范式意味着越严格的设计要求&#xff0c;同时数据冗余越小第一范式(1NF)&#xff1a;数据库表的每一列都…