体育外围

体育外围
分享体育外围官网與網絡優惠

Python字典教程大全

你是否了解Python字典,以及創建Python字典都有哪些的實際的應用操作,還有如何訪問字典中的值等等,此文章就是針對這些問題,給出超出你預期的答案。

本文從六個方面介紹字典,包括:字典創建的5種方式、訪問字典元素、字典元素添加、字典元素刪除、字典的其他方法、序列解包(拆包)。

字典

字典是“鍵值對”的無序可變序列,字典中的每個元素都是一個“鍵值對”,包含:“鍵對象”和“值對象”。可以通過“鍵對象”實現快速獲取、刪除、更新對應的“值對象”。

列表中我們通過“下標數字”找到對應的對象。字典中通過“鍵對象”找到對應的“值對象”。

“鍵”:是任意的不可變數據,比如:整數、浮點數、字符串、元組。但是:列表、字典、集合這些可變對象,不能作為“鍵”。并且“鍵”不可重復。

“值”:可以是任意的數據,并且可重復。

空字典表示方式:{}或dict()

1.創建字典

方式一:{key:value}

# {key: value}
dict1 = {'one': 1, 'two': 2, 'three': 3}print(dict1)

方式二:dict()

# dict(zip(keys, values))# 或dict([(k, v), (k, v)])# 或dict(((k, v), (k, v)))
k = ['one', 'two', 'three']v = [1, 2, 3]dict2 = dict(zip(k, v))print(dict2)
dict3 = dict([('one', 1), ('two', 2), ('three', 3)])print(dict3)
dict3 = dict((('one', 1), ('two', 2), ('three', 3)))print(dict3)

方式三:dict(key=value)

# dict(key=value)
dict4 = dict(one=1, two=2, three=3)print(dict4)

方式四:字典推導

# 字典推導式
lst1 = ['one', 'two', 'three']lst2 = [1, 2, 3]dict5 = {lst1[i]: lst2[i] for i in range(len(lst1))}print(dict5)

方式五:fromkeys()

# fromkeys()
# 沒有指定value,默認Nonedict6 = dict.fromkeys(['k1', 'k2', 'k3'])print(dict6)  # {'k1': None, 'k2': None, 'k3': None}
#?指定valuedict7 = dict.fromkeys(['k1', 'k2', 'k3'], 'value')print(dict7)??#?{'k1':?'value',?'k2':?'value',?'k3':?'value'}

2.訪問字典元素

#定義一個字典a = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}

1.通過[鍵]獲得“值”。若鍵不存在,則拋出異常。

a = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}print(a['name'])  # Lucyprint(a['sex'])??#?報錯

2.通過get()方法獲得“值”。推薦使用。優點是:指定鍵不存在,返回None;也可以設定指定鍵不存在時默認返回的對象。推薦使用get()獲取“值對象”。

a = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}
print(a.get('sex',?'不存在此鍵'))??#?不存在此鍵

3.列出所有的鍵值對。

for k, v in a.items():????print(k,?v)

4.列出所有的鍵,列出所有的值。

for k in a.keys():    print(k)
for v in a.values():    print(v)

5.檢測一個“鍵”是否在字典中。

print('name'?in?a)??#?True

3.字典元素添加

給字典新增“鍵值對”。如果“鍵”已經存在,則覆蓋舊的鍵值對;如果“鍵”不存在,則新增“鍵值對”。

a = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}a['adder'] = '上海市'print(a)

update()

# 更新,有則覆蓋,無則添加# 1. 增加鍵值對# 方式一:dic9 = {'name': 'lucy', 'age': 18}dic9.update(hobby='運動', hight=178)print(dic9)  # {'name': 'lucy', 'age': 18, 'hobby': '運動', 'hight': 178}
# 方式二:dic10 = {'name': 'lucy', 'age': 18}dic10.update([('hobby', '運動'), ('hight', 178)])print(dic10)  # {'name': 'lucy', 'age': 18, 'hobby': '運動', 'hight': 178}
dic10 = {'name': 'lucy', 'age': 18}dic10.update((('hobby', '運動'), ('hight', 178)))print(dic10)  # {'name': 'lucy', 'age': 18, 'hobby': '運動', 'hight': 178}
# 方式三:dic11 = {'name': 'lucy', 'age': 18}dic12 = {'name': 'tom', 'hight': 178}dic11.update(dic12)print(dic11)  # {'name': 'tom', 'age': 18, 'hight': 178}
# 2. 修改鍵所對應的值dic13 = {'name': 'lucy', 'age': 18}dic13.update(name='tom')print(dic13)  # {'name': 'tom', 'age': 18}

setdefault(key,default)

# setdefault(key,default)# 如果default省略,向字典中添加了key:None,# 如果dedault未省略。則向字典中添加了key:defaultdict1 = {"name": "張三", "age": 18, "score": 100, "hobby": "籃球"}print(dict1)dict1.setdefault("111")print(dict1)  # {'name': '張三', 'age': 18, 'score': 100, 'hobby': '籃球', '111': None}
dict1.setdefault("222", 222)print(dict1)??#?{'name':?'張三',?'age':?18,?'score':?100,?'hobby':?'籃球',?'111':?None,?'222':?222}

4.字典元素刪除

pop()

刪除指定鍵值對,并返回對應的“值對象”。

a = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}b = a.pop('age')print(b)  # 18print(a)??#?{'name':?'Lucy',?'job':?'programmer'}

popitem()

隨機刪除一個鍵值對,并返回。若想一個接一個地移除并處理項,這個方法就非常有效。

a = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}b = a.popitem()print(b)
a = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}for i in range(len(a)):    a.popitem()print(a)??#?{}

clear()

刪除所有鍵值對。

a = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}a.clear()print(a)??#?{}

del

a = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}del a['name']print(a)??#?{'age':?18,?'job':?'programmer'}

5.字典的其他方法

copy()

import copy# a.copy(),和列表的使用完全相同,拷貝的是最外層的地址dict4 = {"name": "張三", "age": 18, "score": 100, "hobby": "籃球"}print(dict4)dict5 = dict4.copy()dict4["name"] = "jack"print(dict4)print(dict5)print(dict5 is dict4)
print("*" * 20)
# 思考問題,列表和字典的拷貝# a.list1 = [1, 2, 3, {"name": "張三", "age": 18}]list2 = list1.copy()list1[-1]["age"] = 20print(list2)
# b
list1 = [1, 2, 3, {"name": "張三", "age": 18}]list2 = copy.deepcopy(list1)list1[-1]["age"] = 20print(list2)
print("*" * 30)
# cdict4 = {"hobby": ["籃球"]}print(dict4)dict5 = dict4.copy()dict4["hobby"].append("足球")print(dict5)

6.序列解包(拆包)

序列解包可以用于元組、列表、字典,可以讓我們方便的對多個變量賦值。

>>> x,y,z = (10,20,30)>>> x10>>> y20>>> z30>>> a,b,c = [10,20,30]>>> a10>>> b20>>> c30

序列解包用于字典時,默認是對“鍵”進行操作;如果需要對鍵值對操作,則需要使用items();如果需要對“值”進行操作,則需要使用values();

di = {'name': 'Lucy', 'age': 18, 'job': 'programmer'}a, b, c = diprint(a, b, c)  # name age job
a, b, c = di.items()print(a)  # ('name', 'Lucy')
a, b, c = di.values()print(a)??#?Lucy
贊(0) 打賞
關注我們
未經允許不得轉載:体育外围 » Python字典教程大全
分享到: 更多 (0)

評論 搶沙發

這是一種鼓勵

支付寶掃一掃打賞

微信掃一掃打賞