Python 這10個字典操作你必須知道
key是否存在
使用
in
關鍵字判斷key是否存在字典中
d = {
"name"
:
"zhang"
,
"age"
:
10
}
key =
"gender"
if
key
in
d:
pass
不要使用
key in d.keys()
, 這是一種畫蛇添足的操作,因為d.keys()會返回一個新的列表物件,導致記憶體最大。
合併字典
>>>
x = {
'a'
:
1
,
'b'
:
2
}
>>>
y = {
'b'
:
3
,
'c'
:
4
}
>>>
{**x, **y}
{
'a'
:
1
,
'b'
:
3
,
'c'
:
4
}
返回新的字典物件,x和y都不會改變,這是使用了PEP448範化解包操作, 如果 x 和 y 有相同的key, 那麼y會覆蓋x。 如果使用字典的
update
方法,將修改原來的物件,例如:
>>>
y.update(x)
>>>
y
{
'b'
:
2
,
'c'
:
4
,
'a'
:
1
}
迭代字典
z = {
'b'
:
2
,
'c'
:
4
,
'a'
:
1
}
>>>
for
key, value
in
z.items():
print(key, value)
b
2
c
4
a
1
也可以直接對字典z進行迭代,每次迭代返回的是key,前面那種操作 z.items()會返回一個新的物件。
>>>
for
key
in
z:
print(key, z[key])
b
2
c
4
a
1
字典推導
使用字典推導式快速構建字典物件
>>>
fruits = [
'apple'
,
'mango'
,
'banana'
,
'cherry'
]
>>>
{f:len(f)
for
f
in
fruits}
{
'apple'
:
5
,
'mango'
:
5
,
'banana'
:
6
,
'cherry'
:
6
}
字典排序
字典本質上是個無序的容器物件(其實Python3.6開始支援有序,不過這個有序是指按照key的新增順序),如果我們要對字典的 key 或者 value 排序,一般是將其轉換為list,再按照key或者value排序。
>>>
d = {
"c"
:
3
,
"a"
:
1
,
"f"
:
6
,
"b"
:
}
# 按照value排序
>>>
sorted(d.items(), key=operator.itemgetter(
1
))
[(
'b'
,
), (
'a'
,
1
), (
'c'
,
3
), (
'f'
,
6
)]
# 按照key排序
>>>
sorted(d.items(), key=operator.itemgetter(
))
[(
'a'
,
1
), (
'b'
,
), (
'c'
,
3
), (
'f'
,
6
)]
>>>
預設值初始化字典
統計列表中每個字母出現的次數
>>>
chars = [
'a'
,
'b'
,
'c'
,
'a'
,
'd'
,
'c'
]
>>>
data = {}
>>>
for
c
in
chars:
...
if
c
in
data:
...
data[c]+=
1
...
else
:
...
data[c] =
...
>>>
data
{
'a'
:
1
,
'b'
:
,
'c'
:
1
,
'd'
:
}
可以使用 collections.defaultdict 透過工廠函式提供初始化預設值
chars = ['a', 'b','c','a','d','c']
dd = defaultdict(int)
for c in chars:
dd[c] += 1
>>>defaultdict(<class 'int'>, {'a': 2, 'b': 1, 'c': 2, 'd': 1})
defaultdict 是 dict 的子類,繼承了 dict 的所有特性, 如果想要初始值為1 怎麼辦? 可以用lambda函式來指定
dd = defaultdict(
lambda
:
1
)
for
c
in
chars:
dd[c] +=
1
print(dd)
>>>
defaultdict(<function <
lambda
> at
0x01226B28
>, {
'a'
:
3
,
'b'
:
2
,
'c'
:
3
,
'd'
:
2
})
Python學習交流群:519489681 備註:小白愛踢
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31560357/viewspace-2643329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 職場科普,Python這6個字典操作你必須知道!Python
- 這幾個python常用的庫你必須知道!Python
- Python常用的開源框架,這三個你必須知道!Python框架
- Python你必須知道的十個庫Python
- 這10款好用的Windows軟體,你必須知道!Windows
- 想要學習Python課程,這些問題你必須知道!Python
- 遊戲出海越南前,這些事情你必須知道遊戲
- 你必須知道的 SmartSql !SQL
- 29 個你必須知道的 Linux 命令Linux
- JavaScript 面試必須知道的 10 個概念JavaScript面試
- 關於LLVM,這些東西你必須知道!LVM
- 工作效率太低?這個目標管理神器工具你必須要知道
- 學習Python,這些你必須搞懂!Python
- 關於JVM,你必須知道的這些知識點JVM
- 邦芒面試:想面試成功,這些事你必須知道面試
- 理解大型分散式網站你必須知道這些概念分散式網站
- ?你必須知道的Java泛型Java泛型
- 這些Python騷操作,你知道嗎?Python
- CSS你可以不寫,但這些規範必須要知道!CSS
- Linux系統擁有哪些特性?這些你必須知道!Linux
- 關於Linux作業系統,這些你必須知道!Linux作業系統
- 自媒體實時熱點怎麼追?這幾個工具你必須知道!
- 【分享】Postman介面測試實戰分享,這5個問題你必須得知道!Postman
- 作為一個Java程式設計師,這 8 個開源類庫你必須知道!Java程式設計師
- 檔案管理,你必須要知道的三個要點
- 你必須知道的HTTP基本概念HTTP
- 開發者測試:你必須知道 7 件事
- 你必須要知道的babel二三事Babel
- 你必須知道的cookie攻防技術!!!Cookie
- 不能錯過!你必須知道的3種重要Python技能Python
- 你必須知道的python運維常用指令碼!(日常更新)Python運維指令碼
- 【推薦】Python中你必須要知道的IDE工具!PythonIDE
- 當.Net撞上BI視覺化,這3種“套路”你必須知道視覺化
- 阿里生鮮電商雙11大考 這些招數你必須知道阿里
- Python入門必須知道的11個知識點Python
- 初學Python必須知道的11個知識點!Python
- Python如何區分不同的語句塊?這些必須知道!Python
- GO和Python有什麼區別?這十點必須知道!GoPython