今天看別人**時發現乙個事,就是把物件當作字典的鍵名,並且把兩個物件(類的例項)當作鍵名,然後去查了下:
鍵必須是不可變的,如字串,數字或元組。但是網上卻沒有說其他型別可不可以,怎麼用的。我寫**試了下:
class
person
:def
__init__
(self, name)
: self.name = name
i =5
s ='abc'
t =(5,
'a')
p = person(
'lily'
)q = person(
'xiao'
)m =
lst =[1
,2,3
]d =
d[i]
='five'
d[s]
='abc'
d[t]
='five-a'
d[p]
='name:lily'
# d[lst] = 'list : 1,2,3'
# typeerror: unhashable type: 'list'
d[p, q]
='two people: lily and xiao'
d[i,s,t,p,q]
='all in key'
for k, v in d.items():
print
(k,'=>'
, v)
輸出結果:
5 => five
abc => abc
(5, 'a') => five-a
<__main__.person object at 0x000001803eef27f0> => name:lily
(<__main__.person object at 0x000001803eef27f0>, <__main__.person object at 0x000001803eef28d0>) => two people: lily and xiao
(5, 'abc', (5, 'a'), <__main__.person object at 0x000001803eef27f0>, <__main__.person object at 0x000001803eef28d0>) => all in key
print(d[p, q])
print(d[q, p])
two people: lily and xiao
traceback (most recent call last):
file "", line 1, in runfile('c:/users/xpeng/.spyder-py3/temp.py', wdir='c:/users/xpeng/.spyder-py3')
file "d:\program files (x86)\microsoft visual studio\shared\anaconda3_64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
file "d:\program files (x86)\microsoft visual studio\shared\anaconda3_64\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
file "c:/users/xpeng/.spyder-py3/temp.py", line 37, in print(d[q, p])
keyerror: (<__main__.person object at 0x000001803ef58940>, <__main__.person object at 0x000001803ef58668>)
(1)除了列表不能當作鍵名,其它都 可以,還可以放多個。
(2)我是這樣理解的,列表是可變的,其他型別都是不可變的。物件作為鍵名時,實際傳入的是物件的位址,也是不可變的。
(3)放多個時不同順序時鍵不同。
------2020.04.07更新-----
感謝兩次網友的提醒。
(1)準確的說是列表、字典這種不可雜湊(unhashable)的型別不可當做鍵值,可雜湊的型別才可當作鍵。
終端可以是豐富多彩的 echo實用技巧
當我們編寫指令碼,或者寫一些 新手教學 的時候,經常會用到更改配置檔案的情況,比如在centos7中更換docker國內映象源,傳統的做法是,備份舊檔案,然後,vi開啟 etc docker daemon.json,輸入 如果善用echo,我們可以一行命令搞定echo etc docker daem...
python字典的作用 python字典詳解
字典的用途 字典是python提供的一種常用的資料結構,它用於存放具有對映關係的資料。字典相當於儲存了兩組資料,其中一組資料是關鍵資料,被稱為 key 另一組資料可通過 key 來訪問,被稱為 value。形象地看,字典中 key 和 value 的關聯關係如下圖所示 注意 key是十分關鍵的資料,...
python內建字典 python中字典的內建方法
python字典包含了以下內建方法 功能 字典 clear 函式用於刪除字典內所有元素。語法 dict.clear 引數 無 返回值 沒有任何返回值。dict print 字典長度 d len dict 字典長度 2 dict.clear print 字典刪除後長度 d len dict 字典刪除後...