1. 程式人生 > >Python字典的key不只可以是字串

Python字典的key不只可以是字串

Python中不可變型別可以為字典的key。
也就是說,數字型別(int、float、bool、complex)、字串、元組 都可以為Python字典的key。

其中的原理就是,當進行 map_01[“hello”] = “hello world” 增加字典元素時,字串key,"hello"會在字典底層被傳入hash(object)函式返回一個唯一的hash值。而這個hash(object)函式引數就必須是Python不可變型別。

所以以下程式碼都是正確的:

dict_01 = {}
# 數字為key
dict_01[2] = "two 整數"
dict_01[2.2] = "two.two 小數"
dict_01[True] = "真"
# 字串為key
dict_01["hello"] = "hello world 字串"
# 元組為key
dict_01[(123, 456)] = "元組"

print(dict_01)
# 嘗試獲取元組
print(dict_01.get((123, 456), "沒有獲取到"))

輸出:

{2: 'two 整數', 2.2: 'two.two 小數', True: '真', 'hello': 'hello world 字串', (123, 456): '元組'}
元組

注意:
字典中,bool的True會被翻譯為1,False會被翻譯為0:

# True和False的測試

dict_01 = {}
dict_01[True] = "真"
dict_01[False] = "假"
print("先獲取值看看:")
print(dict_01[True])
print(dict_01[False])
print(dict_01[1])
print(dict_01[0])

print("覆蓋後:")
dict_01[1] = "one"
dict_01[0] = "zero"
print(dict_01[True])
print(dict_01[False])
print(dict_01[1])
print(dict_01[0])

輸出:

先獲取值看看:
真
假
真
假
覆蓋後:
one
zero
one
zero

相關推薦

Python字典key不只可以是字串

Python中不可變型別可以為字典的key。 也就是說,數字型別(int、float、bool、complex)、字串、元組 都可以為Python字典的key。 其中的原理就是,當進行 map_01[“hello”] = “hello world” 增加字典元素

python-字典】判斷python字典key是否存在的

打印 是否 str pop highlight int rac copyto 屬性 一般有兩種通用做法: 第一種方法:使用自帶函數實現: 在python的字典的屬性方法裏面有一個has_key()方法: [python] view plain copy #生成一

python】json中字典key不可為數值型

pre size color code 不可 bsp 存在 clas 問題 遇到了一個很詭異的錯誤。寫一個字典,存入json文件。之後讀出判斷是否存在key。結果驚奇的發現,同一個key居然存在兩次。 原因:json會將數值key轉換為unicode 結論:使用json

'dict_values' object does not support indexing, Python字典dict中由value查key

ima 通過 pre rap error mod returns RR rds Python字典dict中由value查key 眾所周知,字典dict最大的好處就是查找或插入的速度極快,並且不想列表list一樣,隨著key的增加越來越復雜。但是dict需要占用較大的

python字典的循環是默認取key

class nbsp key value all BE ber 默認 color 字典循環默認取key例子 dict={‘name‘:‘john‘,‘number‘:‘201801‘,‘weight‘:‘80kg‘,‘tall‘:‘180cm"} #------直接

python cookies提取——從字串字典(一行Python程式碼)

def extract_cookies(cookie): """從瀏覽器或者request headers中拿到cookie字串,提取為字典格式的cookies""" cookies = dict([l.split("=", 1) for l in cookie.split("; ")]) return co

python str dic json 字串和檔案轉化為字典

python 字串和字典相互轉換 1,python資料轉換為json資料 2,json.dumps() 和 json.loads() 編碼和解碼JSON資料 3,檔案轉換為字典 1,python資料轉換為json資料 #!/usr/

python語法基礎之字串.列表.字典

字串的儲存 a1=100  佔1個位元組。 a2="100" 是字串佔3個位元組。 字串的記憶體中的儲存方式: 1G=1024M 1M=1024K 1K=1024Byte(位元組,最小的分配的儲存單元就是位元組,一個位元組的最大值是255) input輸入的都

python str dic json 字串轉化為字典

1,python資料轉換為json資料 #!/usr/local/bin/python3 # coding:utf-8 import json data = '{"name": "ni", "city

python字典,限定key的範圍,找到value最大的對應的key

一下連結是我在stack overflow上的提問及解答, https://stackoverflow.com/questions/53513792/python-dictionary-find-key-of-max-vlue/53515710#53515710 如對於字典d = {1:

python 字典key與value進行交換

交換字典的key與value的兩種方法: 方法一: 使用dict.items()方式 #!/usr/bin/env python3 # -*- coding: utf-8 -*- dict_

判斷python字典key是否存在的兩種方法

今天來說一下如何判斷字典中是否存在某個key,一般有兩種通用做法,下面為大家來分別講解一下: 第一種方法:使用自帶函式實現。在python的字典的屬性方法裡面有一個has_key()方法,這個方法使用起來非常簡單。例:

python 字典修改key的方法

環境python3,今天在溫習字典的時候想起來,如果我字典想要修改key而不改動value呢?>>> a = {"yuntian":"zero", "Alex":"Li"}我想要把"yuntian"由小寫改為大寫,應該怎樣操作呢?a.["Yuntian"]

python —— 資料結構(字串,元組,列表,字典,集合)

Python 識別符號 1、識別符號由字母、數字、下劃線組成。 2、所有識別符號可以包括英文、數字以及下劃線(_),但不能以數字開頭。 3、識別符號是區分大小寫的。 4、以單下劃線開頭 _foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行

判斷python字典key是否存在的

 一般有兩種通用做法: 第一種方法:使用自帶函式實現: 在python的字典的屬性方法裡面有一個has_key()方法: #生成一個字典 d = {'name':Tom, 'age':10, 'Tel':110} #列印返回值 print d.has_key('name

Python字典元素的賦值 (字典key和value均為組合型別)

>>> doc_title = 'nihao' >>> url = 'www.nihao.com' >>> td_matrix = {} >>> td_matrix[(doc_title, url)]

python字典中沒有輸入的鍵key 返回一定的錯誤資訊或者提示狀態

推薦使用 'key' in dict  返回布林值的方法 python3之後直接去除了下面的has_key()方法,但是如果你的程式需要相容2.2或之前的版本程式就只能使用較早的方法了。 Python 字典(Dictionary) has_key()方法 描述Pyth

少說話多寫程式碼之Python學習011——字典的格式化字串

前面我們知道了字串的用法,格式化字串也有一定的寫法。如何配合字典來格式化字串會非常方便,我們先看一段程式碼。 phonebook={     '袁紹':'8880','曹操':'6660','劉備':'9990' } print("'劉備's phone number is

python 字典中文key處理,讀取,比較

昨天碰到的,如果鍵是中文,如何進行匹配呢,先看文字內容: 這是字典裡兩個元素的內容,編碼是utf-8,中文內容 執行程式碼如下 # -*- coding: utf-8 -*- rate1

Python 的數字、字串、列表、元祖、字典、資料轉換(網路整理)

總結:變數賦值簡單粗暴不需要宣告型別, 靈活多變,非常好用。數字資料類是不可改變的資料型別,改變數字資料型別會分配一個新的物件。字串的操作有基本的功能不需要再自己進行拼接遍歷的操作。列表用 "[ ]" 標識類似 C 語言中的陣列。元組用 "( )" 標識。內部元素用逗號隔開。但是元組不能二次賦值,相當於只讀列