Python元組 字典

2021-08-09 14:39:24 字數 1987 閱讀 5290

t1 = "a", 1, 2, 3

t2 = ("b", 4, 5, 6)

元組的主要缺點就是資料的可讀性差,當我們沒有給資料分配名字時,即沒有像symbol, num1, num2, num3 = t1這種**時,我們不會知道t1元組裡的第乙個值代表symbol,第二個值代表num1…我們訪問元組時也只能是類似t1[1]這樣,不能知道資料的具體指代。

->解決方案:命名元組

from collections import namedtuple

t = namedtuple("t", "symbol num1 num2 num3")

#step1:使用collections.namedtuple來建立乙個類

t3 = t("c", 7, 8, 9)

#step2:建立該類的例項

如果我們需要改變儲存的資料,那麼就需要用到字典了。

stocks =
注1:字典列印時並不會按照資料插入字典的順序列印出來。為了使鍵查詢足夠快,字典使用了雜湊演算法,因此字典在內部是無序的。

注2:列表可能在任何時候發生變化(如新增或刪除列表中元素),所以列表不能被雜湊稱乙個特定的值,所以列表不能用作鍵。出於同樣原因,字典也不能用作另一字典的鍵。

#使用setdefault

defletter_frequency

(sentence):

frequencies = {}

for letter in sentence:

frequency = frequencies.setdefault(letter, 0)

frequencies[letter] = frequency + 1

return frequencies

#使用defaultdict

from collections import defaultdict

defletter_frequency

(sentence):

frequencies = defaultdict(int)

for letter in sentence:

frequencies[letter] += 1

return frequencies

在這個例子中,所呼叫的函式是int,也就是乙個整數物件的建構函式。通常情況下,在**中建立乙個整數只需要鍵入乙個整數數字。而如果使用int建構函式來建立乙個整數,我們可以將想要建立的專案傳給它(如將一連串的數字字元轉換成乙個整數)。但如果我們呼叫int時不帶任何引數,它就會簡單地返回0。

在這段**中,如果字母在defaultdict中不存在,則在我們訪問它時會返回0,之後我們為這個數字加1來表示我們發現了該字母的乙個例項,當我們下次再找到乙個時,就再增加其值。

from collections import defaultdict

num_items = 0

deftuple_counter

():global num_items

num_items += 1

return (num_items, )

當我們執行這段**時,可以再同一行**中同時做到訪問空鍵並插入列表兩個動作:

注:這個例子雖然簡潔地展示了如何用自己的函式建立defaultdict,但實際上這並不是很好的**。全域性變數的使用意味著如果我們建立了4個不同點defaultdict**段,每個都使用乙個tuple_counter,那麼它將計算再所有字典中全部條目的數量,而不是為每乙個字典記錄不同的數。最好的辦法是建立乙個類,並將這個類中的乙個方法傳給defaultdict。

Python 元組 字典

元組簡介 字典簡介 字典的基本介紹 字典的作用和列表類似,都是用來儲存物件的容器 列表儲存資料的效能好,但是查詢資料的效能差,字典正好與之相反 在字典中每乙個元素都有唯一的名字,通過這個唯一的名字可以找到指定的元素 這個唯一的名字我們稱之為key 通過key可以快速查詢value 也可以稱之為值 字...

python 元組和字典

元組 python的元組與列表類似,不同之處在於元組的元素不能修改。元組使用小括號,列表使用方括號。coding gbk tuple1,tuple2 123,xyz 456,abc 如果比較的元素是同型別的,則比較其值,返回結果。如果兩個元素不是同一種型別,則檢查它們是否是數字。如果是數字,執行必要...

python列表元組字典

1.列表的資料項不需要具有相同的型別 建立乙個列表,只要把逗號分隔的不同的資料項使用方括號括起來即可 list1 google runoob 1997 2000 print list 0 list 0 2.列表的增 刪 改 查 insert delete update query 增 list.in...