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.pswp.cn/news/529422.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529422.shtml
英文地址,請注明出處:http://en.pswp.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;數據庫表的每一列都…