成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

python3字典函數(shù) python字典函數(shù)大全

Python 字典作為函數(shù)參數(shù),編寫函數(shù)實現(xiàn)功能:將一個字典類型數(shù)據(jù)傳遞給函數(shù)經(jīng)函數(shù)處理后,依次輸出鍵值

def?exchange(d):

創(chuàng)新互聯(lián)擁有一支富有激情的企業(yè)網(wǎng)站制作團隊,在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕十多年,專業(yè)且經(jīng)驗豐富。十多年網(wǎng)站優(yōu)化營銷經(jīng)驗,我們已為成百上千中小企業(yè)提供了成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計解決方案,定制網(wǎng)站開發(fā),設(shè)計滿意,售后服務(wù)無憂。所有客戶皆提供一年免費網(wǎng)站維護(hù)!

res?=?dict((v,k)?for?k,v?in?d.items())

print(res)

print(d)

一行代碼完成交換的,按你的需求定義了一個函數(shù)

python中字典常用的方法有哪些,分別有什么作用?

寫法:字典序列[key] = 值 ***字典為可變類型

常用方法:

1、# 新增字典中的數(shù)據(jù)

dict1 = {'name':'huu','age':20,'gender':'男'}

dict1['id'] = 133

print(dict1)

2、# 修改字典中的數(shù)據(jù)

dict1['name'] = 'xiauaiguai'

print(dict1)

3、刪除字典或刪除字典中指定鍵值對

del()/del:

dict1 = {'name':'huanghu','age':30,'gender':'男'}

# del(dict1) 直接將字典刪除了,運行報錯

del dict1['name']

print(dict1)

# del dict1[names] 刪除不存在的key,運行報錯

4、清空字典

clear():

dict1.clear() # 清空字典

print(dict1)

5、查找

key值查找

如果當(dāng)前查找的key存在則返回對應(yīng)的值,否則則報錯

函數(shù)查找

get():如果當(dāng)前查找的key不存在則返回第二個參數(shù)值(默認(rèn)值),

如果省略第二個參數(shù)則返回 None

key()

dict1 = {'name':'huhu','age':20,'gender':'男'}

print(dict1['name']) # huhu

print(dict1['id']) # 報錯

# 1, get()查找

print(dict1.get('name')) # huanghu

print(dict1.get('id',133)) # 133--如果當(dāng)前查找的key不存在則返回第二個參數(shù)值(默認(rèn)值)

print(dict1.get('id')) # None--如果省略第二個參數(shù)則返回 None

# 2, keys() 查找字典中所有的key,返回可迭代對象

print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])

# 3,values() 查找字典中所有的values,

print(dict1.values()) # dict_values(['huanghu', 30, '男'])

# 4, items() 查找字典中所有的鍵值對,返回可迭代對象,里面的數(shù)據(jù)是元組,

元組數(shù)據(jù)1是字典中的key,元組數(shù)據(jù)2是字典key對應(yīng)的值

print(dict1.items()) # dict_items([('name', 'huahu'), ('age', 20), ('gender', '男')])

Python中的字典是什么?

字典(Dictionary)

字典也是Python語言中經(jīng)常使用的一種數(shù)據(jù)類型。跟列表類似,字典是另外一種可存儲任意類型的數(shù)據(jù),并且字典儲存的數(shù)據(jù)也是可以修改的。

不同于列表的是,字典每個基本元素都包括兩個部分:鍵(key) 和 鍵對應(yīng)的值(value)。

鍵和值之間用冒號(:)分割,每對元素之間用逗號(,)分割,整個字典的數(shù)據(jù)在大括號{}中,格式如下所示:

請點擊輸入圖片描述

d = {"key1" : 1, "key2" : "hi", "key3":[]}

在字典中,鍵的內(nèi)容是不可重復(fù)的。?鍵為不可變數(shù)據(jù)類型,值可以是任何數(shù)據(jù)類型。在這里,鍵只支持?字符串類型。

請點擊輸入圖片描述

請點擊輸入圖片描述

字典最大的優(yōu)勢就是能在海量數(shù)據(jù)下利用“鍵”快速查找出想要的值,?當(dāng)有很多數(shù)據(jù)需要存儲的時候,我們給每個值都打個標(biāo)簽,也就是“鍵”;想要調(diào)用這個值時,字典能夠利用這個標(biāo)簽快速幫我們找到它。但是如果標(biāo)簽重復(fù)了,字典不知道哪個值才是對的,就會報錯哦~

列表是根據(jù)排序來記錄每項的值,但是字典是沒有順序的,所以同一字典,每次打印出的排序可能是不同的?!版I”才是調(diào)用字典的關(guān)鍵元素。

字典是基礎(chǔ)的數(shù)據(jù)類型,所以變量也可以被賦值為字典。

請點擊輸入圖片描述

請點擊輸入圖片描述

可以直接用大括號{},或者內(nèi)置函數(shù)dict()?創(chuàng)建空字典:

Dict={}Dict=dict() #dict()是一個內(nèi)置函數(shù),可以用來快速創(chuàng)建空字典。#注意是小寫開頭的dict,創(chuàng)建變量名或者函數(shù)名要避免和內(nèi)置函數(shù)dict重名哦~

控制中的遍歷積木,不僅可以遍歷序列、列表,還可以遍歷字典

請點擊輸入圖片描述

Python中字典的內(nèi)建函數(shù)用法是什么?

點擊上方 "Python人工智能技術(shù)" 關(guān)注,星標(biāo)或者置頂

22點24分準(zhǔn)時推送,第一時間送達(dá)

后臺回復(fù)“大禮包”,送你特別福利

編輯:樂樂 | 來自:pypypypy

上一篇:

正文

大家好,我是Pythn人工智能技術(shù)。

內(nèi)置函數(shù)就是Python給你提供的,拿來直接用的函數(shù),比如print.,input等。

截止到python版本3.6.2 ,python一共提供了68個內(nèi)置函數(shù),具體如下

abs() dict() help() min() setattr()

all() dir() hex() next() slice()

any() divmod() id() object() sorted()

ascii() enumerate() input() oct() staticmethod()

bin() eval() int() open() str()

bool() exec() isinstance() ord() sum()

bytearray() ?lter() issubclass() pow() super()

bytes() ?oat() iter() print() tuple()

callable() format() len() property() type()

chr() frozenset() list() range() vars()

classmethod() getattr() locals() repr() zip()

compile() globals() map() reversed() __import__()

complex() hasattr() max() round()

delattr() hash() memoryview() set()

本文將這68個內(nèi)置函數(shù)綜合整理為12大類,正在學(xué)習(xí)Python基礎(chǔ)的讀者一定不要錯過,建議收藏學(xué)習(xí)!

和數(shù)字相關(guān) 1. 數(shù)據(jù)類型

bool : 布爾型(True,False)

int : 整型(整數(shù))

float : 浮點型(小數(shù))

complex : 復(fù)數(shù)

2. 進(jìn)制轉(zhuǎn)換

bin() 將給的參數(shù)轉(zhuǎn)換成二進(jìn)制

otc() 將給的參數(shù)轉(zhuǎn)換成八進(jìn)制

hex() 將給的參數(shù)轉(zhuǎn)換成十六進(jìn)制

print(bin(10)) # 二進(jìn)制:0b1010

print(hex(10)) # 十六進(jìn)制:0xa

print(oct(10)) # 八進(jìn)制:0o12

3. 數(shù)學(xué)運算

abs() 返回絕對值

divmode() 返回商和余數(shù)

round() 四舍五入

pow(a, b) 求a的b次冪, 如果有三個參數(shù). 則求完次冪后對第三個數(shù)取余

sum() 求和

min() 求最小值

max() 求最大值

print(abs(-2)) # 絕對值:2

print(divmod(20,3)) # 求商和余數(shù):(6,2)

print(round(4.50)) # 五舍六入:4

print(round(4.51)) #5

print(pow(10,2,3)) # 如果給了第三個參數(shù). 表示最后取余:1

print(sum([1,2,3,4,5,6,7,8,9,10])) # 求和:55

print(min(5,3,9,12,7,2)) #求最小值:2

print(max(7,3,15,9,4,13)) #求最大值:15

和數(shù)據(jù)結(jié)構(gòu)相關(guān) 1. 序列

(1)列表和元組

list() 將一個可迭代對象轉(zhuǎn)換成列表

tuple() 將一個可迭代對象轉(zhuǎn)換成元組

print(list((1,2,3,4,5,6))) #[1, 2, 3, 4, 5, 6]

print(tuple([1,2,3,4,5,6])) #(1, 2, 3, 4, 5, 6)

(2)相關(guān)內(nèi)置函數(shù)

reversed() 將一個序列翻轉(zhuǎn), 返回翻轉(zhuǎn)序列的迭代器

slice() 列表的切片

lst = "你好啊"

it = reversed(lst) # 不會改變原列表. 返回一個迭代器, 設(shè)計上的一個規(guī)則

print(list(it)) #['啊', '好', '你']

lst = [1, 2, 3, 4, 5, 6, 7]

print(lst[1:3:1]) #[2,3]

s = slice(1, 3, 1) # 切片用的

print(lst[s]) #[2,3]

(3)字符串

str() 將數(shù)據(jù)轉(zhuǎn)化成字符串

print(str(123)+'456') #123456

format() 與具體數(shù)據(jù)相關(guān), 用于計算各種小數(shù), 精算等.

s = "hello world!"

print(format(s, "^20")) #劇中

print(format(s, "20")) #左對齊

print(format(s, "20")) #右對齊

# hello world!

# hello world!

# hello world!

print(format(3, 'b' )) # 二進(jìn)制:11

print(format(97, 'c' )) # 轉(zhuǎn)換成unicode字符:a

print(format(11, 'd' )) # ?進(jìn)制:11

print(format(11, 'o' )) # 八進(jìn)制:13

print(format(11, 'x' )) # 十六進(jìn)制(?寫字母):b

print(format(11, 'X' )) # 十六進(jìn)制(大寫字母):B

print(format(11, 'n' )) # 和d?樣:11

print(format(11)) # 和d?樣:11

print(format(123456789, 'e' )) # 科學(xué)計數(shù)法. 默認(rèn)保留6位小數(shù):1.234568e+08

print(format(123456789, '0.2e' )) # 科學(xué)計數(shù)法. 保留2位小數(shù)(小寫):1.23e+08

print(format(123456789, '0.2E' )) # 科學(xué)計數(shù)法. 保留2位小數(shù)(大寫):1.23E+08

print(format(1.23456789, 'f' )) # 小數(shù)點計數(shù)法. 保留6位小數(shù):1.234568

print(format(1.23456789, '0.2f' )) # 小數(shù)點計數(shù)法. 保留2位小數(shù):1.23

print(format(1.23456789, '0.10f')) # 小數(shù)點計數(shù)法. 保留10位小數(shù):1.2345678900

print(format(1.23456789e+3, 'F')) # 小數(shù)點計數(shù)法. 很大的時候輸出INF:1234.567890

bytes() 把字符串轉(zhuǎn)化成bytes類型

bs = bytes("今天吃飯了嗎", encoding="utf-8")

print(bs) #b'\xe4\xbb\x8a\xe5\xa4\xa9\xe5\x90\x83\xe9\xa5\xad\xe4\xba\x86\xe5\x90\x97'

bytearray() 返回一個新字節(jié)數(shù)組. 這個數(shù)字的元素是可變的, 并且每個元素的值得范圍是[0,256)

ret = bytearray("alex" ,encoding ='utf-8')

print(ret[0]) #97

print(ret) #bytearray(b'alex')

ret[0] = 65 #把65的位置A賦值給ret[0]

print(str(ret)) #bytearray(b'Alex')

ord() 輸入字符找?guī)ё址幋a的位置

chr() 輸入位置數(shù)字找出對應(yīng)的字符

ascii() 是ascii碼中的返回該值 不是就返回u

print(ord('a')) # 字母a在編碼表中的碼位:97

print(ord('中')) # '中'字在編碼表中的位置:20013

print(chr(65)) # 已知碼位,求字符是什么:A

print(chr(19999)) #丟

for i in range(65536): #打印出0到65535的字符

print(chr(i), end=" ")

print(ascii("@")) #'@'

repr() 返回一個對象的string形式

s = "今天\n吃了%s頓\t飯" % 3

print(s)#今天# 吃了3頓 飯

print(repr(s)) # 原樣輸出,過濾掉轉(zhuǎn)義字符 \n \t \r 不管百分號%

#'今天\n吃了3頓\t飯'

2. 數(shù)據(jù)集合

字典:dict 創(chuàng)建一個字典

集合:set 創(chuàng)建一個集合

frozenset() 創(chuàng)建一個凍結(jié)的集合,凍結(jié)的集合不能進(jìn)行添加和刪除操作。

3. 相關(guān)內(nèi)置函數(shù)

len() 返回一個對象中的元素的個數(shù)

sorted() 對可迭代對象進(jìn)行排序操作 (lamda)

語法:sorted(Iterable, key=函數(shù)(排序規(guī)則), reverse=False)

Iterable: 可迭代對象

key: 排序規(guī)則(排序函數(shù)), 在sorted內(nèi)部會將可迭代對象中的每一個元素傳遞給這個函數(shù)的參數(shù). 根據(jù)函數(shù)運算的結(jié)果進(jìn)行排序

reverse: 是否是倒敘. True: 倒敘, False: 正序

lst = [5,7,6,12,1,13,9,18,5]

lst.sort() # sort是list里面的一個方法

print(lst) #[1, 5, 5, 6, 7, 9, 12, 13, 18]

ll = sorted(lst) # 內(nèi)置函數(shù). 返回給你一個新列表 新列表是被排序的

print(ll) #[1, 5, 5, 6, 7, 9, 12, 13, 18]

l2 = sorted(lst,reverse=True) #倒序

print(l2) #[18, 13, 12, 9, 7, 6, 5, 5, 1]

#根據(jù)字符串長度給列表排序

lst = ['one', 'two', 'three', 'four', 'five', 'six']

def f(s):

return len(s)

l1 = sorted(lst, key=f, )

print(l1) #['one', 'two', 'six', 'four', 'five', 'three']

enumerate() 獲取集合的枚舉對象

lst = ['one','two','three','four','five']

for index, el in enumerate(lst,1): # 把索引和元素一起獲取,索引默認(rèn)從0開始. 可以更改

print(index)

print(el)

# 1

# one

# 2

# two

# 3

# three

# 4

# four

# 5

# five

all() 可迭代對象中全部是True, 結(jié)果才是True

any() 可迭代對象中有一個是True, 結(jié)果就是True

print(all([1,'hello',True,9])) #True

print(any([0,0,0,False,1,'good'])) #True

zip() 函數(shù)用于將可迭代的對象作為參數(shù), 將對象中對應(yīng)的元素打包成一個元組, 然后返回由這些元組組成的列表. 如果各個迭代器的元素個數(shù)不一致, 則返回列表長度與最短的對象相同

lst1 = [1, 2, 3, 4, 5, 6]

lst2 = ['醉鄉(xiāng)民謠', '驢得水', '放牛班的春天', '美麗人生', '辯護(hù)人', '被嫌棄的松子的一生']

lst3 = ['美國', '中國', '法國', '意大利', '韓國', '日本']

print(zip(lst1, lst1, lst3)) #

for el in zip(lst1, lst2, lst3):

print(el)

# (1, '醉鄉(xiāng)民謠', '美國')

# (2, '驢得水', '中國')

# (3, '放牛班的春天', '法國')

# (4, '美麗人生', '意大利')

# (5, '辯護(hù)人', '韓國')

# (6, '被嫌棄的松子的一生', '日本')

fiter() 過濾 (lamda)

語法:fiter(function. Iterable)

function: 用來篩選的函數(shù). 在?lter中會自動的把iterable中的元素傳遞給function. 然后根據(jù)function返回的True或者False來判斷是否保留留此項數(shù)據(jù) , Iterable: 可迭代對象

搜索公眾號頂級架構(gòu)師后臺回復(fù)“面試”,送你一份驚喜禮包。

def func(i): # 判斷奇數(shù)

return i % 2 == 1

lst = [1,2,3,4,5,6,7,8,9]

l1 = filter(func, lst) #l1是迭代器

print(l1) #

print(list(l1)) #[1, 3, 5, 7, 9]

map() 會根據(jù)提供的函數(shù)對指定序列列做映射(lamda)

語法 : map(function, iterable)

可以對可迭代對象中的每一個元素進(jìn)行映射. 分別去執(zhí)行 function

def f(i): return i

lst = [1,2,3,4,5,6,7,]

it = map(f, lst) # 把可迭代對象中的每一個元素傳遞給前面的函數(shù)進(jìn)行處理. 處理的結(jié)果會返回成迭代器print(list(it)) #[1, 2, 3, 4, 5, 6, 7]

和作用域相關(guān)

locals() 返回當(dāng)前作用域中的名字

globals() 返回全局作用域中的名字

def func():

a = 10

print(locals()) # 當(dāng)前作用域中的內(nèi)容

print(globals()) # 全局作用域中的內(nèi)容

print("今天內(nèi)容很多")

func()

# {'a': 10}

# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__':

# _frozen_importlib_external.SourceFileLoader object at 0x0000026F8D566080,

# '__spec__': None, '__annotations__': {}, '__builtins__':

# (built-in), '__file__': 'D:/pycharm/練習(xí)/week03/new14.py', '__cached__': None,

# 'func': }

# 今天內(nèi)容很多

和迭代器生成器相關(guān)

range() 生成數(shù)據(jù)

next() 迭代器向下執(zhí)行一次, 內(nèi)部實際使?用了__ next__()?方法返回迭代器的下一個項目

iter() 獲取迭代器, 內(nèi)部實際使用的是__ iter__()?方法來獲取迭代器

for i in range(15,-1,-5):

print(i)

# 15

# 10

# 5

# 0

lst = [1,2,3,4,5]

it = iter(lst) # __iter__()獲得迭代器

print(it.__next__()) #1

print(next(it)) #2 __next__()

print(next(it)) #3

print(next(it)) #4

字符串類型代碼的執(zhí)行

eval() 執(zhí)行字符串類型的代碼. 并返回最終結(jié)果

exec() 執(zhí)行字符串類型的代碼

compile() 將字符串類型的代碼編碼. 代碼對象能夠通過exec語句來執(zhí)行或者eval()進(jìn)行求值

s1 = input("請輸入a+b:") #輸入:8+9

print(eval(s1)) # 17 可以動態(tài)的執(zhí)行代碼. 代碼必須有返回值

s2 = "for i in range(5): print(i)"

a = exec(s2) # exec 執(zhí)行代碼不返回任何內(nèi)容

# 0

# 1

# 2

# 3

# 4

print(a) #None

# 動態(tài)執(zhí)行代碼

exec("""

def func():

print(" 我是周杰倫")

""" )

func() #我是周杰倫

code1 = "for i in range(3): print(i)"

com = compile(code1, "", mode="exec") # compile并不會執(zhí)行你的代碼.只是編譯

exec(com) # 執(zhí)行編譯的結(jié)果

# 0

# 1

# 2

code2 = "5+6+7"

com2 = compile(code2, "", mode="eval")

print(eval(com2)) # 18

code3 = "name = input('請輸入你的名字:')" #輸入:hello

com3 = compile(code3, "", mode="single")

exec(com3)

print(name) #hello

輸入輸出

print() : 打印輸出

input() : 獲取用戶輸出的內(nèi)容

print("hello", "world", sep="*", end="@") # sep:打印出的內(nèi)容用什么連接,end:以什么為結(jié)尾

#hello*world@

內(nèi)存相關(guān)

hash() : 獲取到對象的哈希值(int, str, bool, tuple). hash算法:(1) 目的是唯一性 (2) dict 查找效率非常高, hash表.用空間換的時間 比較耗費內(nèi)存

s = 'alex'print(hash(s)) #-168324845050430382lst = [1, 2, 3, 4, 5]print(hash(lst)) #報錯,列表是不可哈希的 id() : 獲取到對象的內(nèi)存地址s = 'alex'print(id(s)) #2278345368944

文件操作相關(guān)

open() : 用于打開一個文件, 創(chuàng)建一個文件句柄

f = open('file',mode='r',encoding='utf-8')

f.read()

f.close()

模塊相關(guān)

__ import__() : 用于動態(tài)加載類和函數(shù)

# 讓用戶輸入一個要導(dǎo)入的模塊

import os

name = input("請輸入你要導(dǎo)入的模塊:")

__import__(name) # 可以動態(tài)導(dǎo)入模塊

幫 助

help() : 函數(shù)用于查看函數(shù)或模塊用途的詳細(xì)說明

print(help(str)) #查看字符串的用途

調(diào)用相關(guān)

callable() : 用于檢查一個對象是否是可調(diào)用的. 如果返回True, object有可能調(diào)用失敗, 但如果返回False. 那調(diào)用絕對不會成功

a = 10

print(callable(a)) #False 變量a不能被調(diào)用

def f():

print("hello")

print(callable(f)) # True 函數(shù)是可以被調(diào)用的

查看內(nèi)置屬性

dir() : 查看對象的內(nèi)置屬性, 訪問的是對象中的__dir__()方法

print(dir(tuple)) #查看元組的方法

你還有什么想要補充的嗎?

免責(zé)聲明:本文內(nèi)容來源于網(wǎng)絡(luò),文章版權(quán)歸原作者所有,意在傳播相關(guān)技術(shù)知識行業(yè)趨勢,供大家學(xué)習(xí)交流,若涉及作品版權(quán)問題,請聯(lián)系刪除或授權(quán)事宜。

技術(shù)君個人微信

添加技術(shù)君個人微信即送一份驚喜大禮包

→ 技術(shù)資料共享

→ 技術(shù)交流社群

--END--

往日熱文:

Python程序員深度學(xué)習(xí)的“四大名著”:

這四本書著實很不錯!我們都知道現(xiàn)在機器學(xué)習(xí)、深度學(xué)習(xí)的資料太多了,面對海量資源,往往陷入到“無從下手”的困惑出境。而且并非所有的書籍都是優(yōu)質(zhì)資源,浪費大量的時間是得不償失的。給大家推薦這幾本好書并做簡單介紹。

獲得方式:

2.后臺回復(fù)關(guān)鍵詞:名著

Python 字典(dic)操作

具體函數(shù)有 set(),pop(),update(),items(),keys(),values(),get(),setdefault()

python 字典操作

假設(shè)字典為 dics = {0:'a', 1:'b', 'c':3}

二是使用dict本身提供的一個 get 方法,在Key不存在的時候,返回None:

print dics.get('a')

print dics.get('Paul')

None

dict.get(key,default=None) 兩個選項 一個 key 一個 default= None ----default可以是任何strings(字符)

2.從字典中取值,若找到則刪除;當(dāng)鍵不存在時,顯示異常key error

[方法]? dics.pop('key')

3.給字典添加一個條目。如果不存在,就指定特定的值;若存在,就算了。

[方法] dic.setdefault(key, value)

4. update

a = {'a':1,'b':2}

a.update({'c':3})

a

{'a': 1,'c': 3,'b': 2}

a.update({'c':4})

a

{'a': 1,'c': 4,'b': 2}

dict的作用是建立一組 key 和一組 value 的映射關(guān)系,dict的key是不能重復(fù)的。

有的時候,我們只想要 dict 的 key,不關(guān)心 key 對應(yīng)的 value,目的就是保證這個集合的元素不會重復(fù),這時,set就派上用場了。

python3 對象 |字典|json|yaml|字符串 相互轉(zhuǎn)化

在研究 k8s 的yaml 配置文件的時候,我總擔(dān)心自己一不小心 會寫錯,所以我向往 使用將對象 序列化 yaml 的形式,

其實 python object 可以 直接 轉(zhuǎn) yaml ,甚至也可以 直接 轉(zhuǎn)成yaml文件?。?!

這里 會經(jīng)常用到幾個 函數(shù) vars() ast.

我們先嘗試用最笨的方法 實現(xiàn) object到y(tǒng)aml 的轉(zhuǎn)化

在python對象 convert to dict 的形式,使用 vars()函數(shù)

然后 dict convert to json 使用 json.dumps(dict)函數(shù)

然后 json converte to yaml 使用 ya= yaml.load(json.dumps(dict)) 然后

再 yaml.safe_dump(ya,default_flow_style=False)

至此我們看到 從 python Object --- dict ---- json --- yaml 的轉(zhuǎn)化

其中 obj dict json yaml 轉(zhuǎn) string ,只要 str()函數(shù)即可,或者 str(vars())結(jié)合

yaml 格式 寫入到文件 ,需要注意的是, open()函數(shù) 的mode 一定要是 'w' ,不能是’wb', b代表是二進(jìn)制寫入

yaml 寫入的是dict str,使用 ‘wb' 會報錯,[yaml TypeError: a bytes-like object is required, not 'str']

【出現(xiàn)該錯誤往往是通過open()函數(shù)打開文本文件時,使用了‘rb’屬性,如:fileHandle=open(filename,'rb'),則此時是通過二進(jìn)制方式打開文件的,所以在后面處理時如果使用了str()函數(shù),就會出現(xiàn)該錯誤,該錯誤不會再python2中出現(xiàn)。

具體解決方法有以下兩種:

第一種,在open()函數(shù)中使用‘r’屬性,即文本方式讀取,而不是‘rb’,以二進(jìn)制文件方式讀取,可以直接解決問題。

第二種,在open()函數(shù)中使用‘rb’,可以在使用之前進(jìn)行轉(zhuǎn)換,有以下實例,來自: 】

其實 python object 可以 直接 轉(zhuǎn) yaml ,甚至也可以 直接 轉(zhuǎn)成yaml文件!??!

比如我已經(jīng)定義了一個 Dog python class,他有 好幾個屬性 并已經(jīng)賦值初始化了

另外生成 yaml 對象

生成yaml文件

結(jié)果是

反過來 yaml ---- json --- 持久化 json 文件 indent=1屬性是為了讓 json 不以單行展示,而是展開

注意的是 python 的 dict 和set 很相似 ,都是 { }, set 里是list, dict 是鍵值對

【# set object is not JSON serializable [duplicate]

打開 demo.json

yaml --- dict

yaml --- python object

json -- dict

json.loads()

dict-- json

json.jumps()

str --- dict

newdict=dict(str)

json -- python object

一個python object無法直接與json轉(zhuǎn)化,只能先將對象轉(zhuǎn)化成dictionary,再轉(zhuǎn)化成json;對json,也只能先轉(zhuǎn)換成dictionary,再轉(zhuǎn)化成object,通過實踐,源碼如下:

yaml -- python object

對yaml,也只能先轉(zhuǎn)換成json ---dictionary,再轉(zhuǎn)化成object,通過實踐,源碼如下:

dict -- -python object

python對象 默認(rèn)都有一個 私有的屬性 dict 取值 就是 object的 字典形式, 賦值就就可以給對象屬性對應(yīng)賦值

例如json 轉(zhuǎn) 對象

對象 轉(zhuǎn) json

Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化

在Python語言中,json數(shù)據(jù)與dict字典以及對象之間的轉(zhuǎn)化,是必不可少的操作。

dict字典轉(zhuǎn)json數(shù)據(jù)

對象轉(zhuǎn)json數(shù)據(jù)

json數(shù)據(jù)轉(zhuǎn)成dict字典

json數(shù)據(jù)轉(zhuǎn)成對象

json的load()與dump()方法的使用

dump()方法的使用

網(wǎng)站標(biāo)題:python3字典函數(shù) python字典函數(shù)大全
文章URL:http://jinyejixie.com/article24/hpdeje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、微信公眾號、域名注冊、網(wǎng)站內(nèi)鏈云服務(wù)器、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
察隅县| 塔城市| 合阳县| 武功县| 门头沟区| 时尚| 阜平县| 伽师县| 平顶山市| 深泽县| 色达县| 吉水县| 拉萨市| 弋阳县| 富民县| 林口县| 长沙县| 仲巴县| 门头沟区| 蒙城县| 亚东县| 兴和县| 大安市| 南丰县| 小金县| 天等县| 来宾市| 衡南县| 同心县| 兰坪| 财经| 天祝| 伊通| 称多县| 江口县| 剑阁县| 化州市| 五大连池市| 柯坪县| 湖北省| 北宁市|