字典的創建
字典是存放一系列鍵值對的資料結構,對標js中的物件,也對標java中的map,
現實中的例子就是通訊錄,根據這個人的名字就可以得到他的電話號碼,
定義字典的寫法跟js中定義物件是一樣的,兩邊花括號,中間key:value,區別在于js定義物件的時候key可以不用引號,
person = {"Bob":"13113113111","Mary":"13113113112","Mark":"13113113113"}
print(person)
列印結果:
{'Bob': '13113113111', 'Mary': '13113113112', 'Mark': '13113113113'}
我們還可以使用dict函式來創建字典:
person = dict(name="小明",age=18) print(person)
列印結果:
{'name': '小明', 'age': 18}
它還允許我們將其他序列轉化成字典
item = [('name','小明'),('age',18)] person = dict(item) print(person)
列印結果:
{'name': '小明', 'age': 18}
字典的基本操作
訪問字典中的值
字典中的元素都是key-value的形式存放的,所以要訪問某一個value,就要用到對應的key,寫法是用中括號:
person = {'name' : '小明', 'age' : 18}
print(person['name'])
列印結果:
小明
你還可以使用get方法來訪問值:
person = {'name' : '小明', 'age' : 18}
print(person.get('name'))
列印結果:
小明
他們的區別在于,使用get方法如果訪問一個不存在的key,它會回傳None,而使用中括號訪問一個不存在的key,會報錯,
還有一個有意思的方法 setdefault,它的作用是獲取一個key對應的value,如果這個key存在,那么獲取值,如果不存在,那么獲取默認值,并往字典中插入這個key,
person = {'name' : '小明', 'age' : 18}
value = person.setdefault('sex','未知')
print(value)
print(person)
列印結果:
未知
{'name': '小明', 'age': 18, 'sex': '未知'}
獲取字典長度
len方法幾乎可以對任何資料進行長度計算,字典中每一對key-value就算做一個長度
person = {'name' : '小明', 'age' : 18}
print(len(person))
列印結果:
2
添加鍵值對
字典是動態結構,可以自由添加鍵值對,
person = {'name' : '小明', 'age' : 18}
person['sex'] = '男'
print(person)
列印結果:
{'name': '小明', 'age': 18, 'sex': '男'}
修改字典中的值
修改和添加一樣的,只不過如果你的key在字典中不存在,那么就添加,如果存在,那么就修改,
person = {'name' : '小明', 'age' : 18}
person['age'] = 15
print(person)
列印結果:
{'name': '小明', 'age': 15}
洗掉鍵值對
洗掉字典中的元素用del關鍵字,跟洗掉串列中的元素是一樣的用法,
person = {'name' : '小明', 'age' : 18}
del person['age']
print(person)
列印結果:
{'name': '小明'}
檢查key是否存在
person = {'name' : '小明', 'age' : 18}
if('name' in person):
print('這個key是存在的')
else:
print('這個key是不存在的')
列印結果:
這個key是存在的
字典常用方法
清空字典內容 clear()
clear方法用于洗掉字典中的所有元素,是直接對原字典執行,方法本身不會有回傳值,
person = {'name' : '小明', 'age' : 18}
person.clear()
print(person)
列印結果:
{}
淺復制 copy()
copy方法回傳一個新字典,包含的鍵值對跟原來的字典完全相同,但是它只是拷貝字典中的一級物件,對于第二級物件,它只是參考,
我們實驗一下,讓字典里面存串列,拷貝之后再修改串列中的值
x = {'name' : '小明', 'age' : [11,12,13]}
y = x.copy()
y['name'] = '大明'
y['age'][1] = 100
print(x)
print(y)
列印結果:
{'name': '小明', 'age': [11, 100, 13]}
{'name': '大明', 'age': [11, 100, 13]}
深復制 deepcopy()
from copy import deepcopy x = {'name' : '小明', 'age' : [11,12,13]} y = deepcopy(x) y['name'] = '大明' y['age'][1] = 100 print(x) print(y)
列印結果:
{'name': '小明', 'age': [11, 12, 13]}
{'name': '大明', 'age': [11, 100, 13]}
獲取所有鍵 keys()
keys方法回傳的是一個迭代器,可以用list方法將它轉換成串列
person = {'name' : '小明', 'age' : 18}
print(list(person.keys()))
列印結果:
['name', 'age']
所謂的迭代器,就是可以直接用來回圈的物件
person = {'name' : '小明', 'age' : 18}
for item in person.keys():
print(item)
列印結果:
name
age
獲取所有值 values()
person = {'name' : '小明', 'age' : 18}
print(list(person.values()))
列印結果:
['小明', 18]
彈出字典中的元素 pop()
彈出的意思其實就是 獲取+洗掉 兩個操作的組合,
person = {'name' : '小明', 'age' : 18}
value = person.pop('age')
print(value)
print(person)
列印結果:
18
{'name': '小明'}
遍歷字典 items()
items方法回傳一個字典視圖的迭代器,包含了字典中所有的鍵值對,每個鍵值對都是以元組的形式存在
person = {'name' : '小明', 'age' : 18}
y = person.items()
for item in y:
print(item)
列印結果:
('name', '小明')
('age', 18)
如果你想進一步取里面的資料,也可以這么寫:
person = {'name' : '小明', 'age' : 18}
y = person.items()
for k,v in y:
print(k + '---' + str(v))
列印結果:
name---小明
age---18
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/114466.html
標籤:Python
