字典和陣列類似,也是可變序列,但它是無序的,保存的內容是以「鍵:值」的形式存放的。
鍵是唯一的,但值可以有很多個。
特徵如下:
定義字典時,每個元素都包含兩個部分--鍵、值,兩者使用「:」隔開,所有元素都放在一個大括號中
創建空字典
# 有兩種方法
name = {}
name = dict()
# name = dict(zip(list1, list2))
name = ['rex', 'xia', 'zhan']
sign = ['up', 'down', '5566']
test = dict(zip(name, sign))
print(test)
# {'rex': 'up', 'xia': 'down', 'zhan': '5566'}
name = dict(id = "12345", email = "rex@gmail")
print(name)
# {'id': '12345', 'email': 'rex@gmail'}
name = ['xia', 'rex']
test = dict.fromkeys(name)
print(test)
# {'xia': None, 'rex': None}
# 元組:陣列、陣列:元組、元組:元組
name = ['xia', 'rex']
test = ('1', '2')
# (1)
dict1 = {test : name}
print(dict1)
# {('1', '2'): ['xia', 'rex']}
# (2)
dict2 = {name : test}
print(dict2)
# Traceback (most recent call last):
#File "C:\Users\a9132\Desktop\python\1.py", line 3, in <module>
#dict2 = {name : test}
#TypeError: unhashable type: 'list'
# (3)
dict3 = {test : test}
print(dict3)
# {('1', '2'): ('1', '2')}
dict_example = {'2':'3', '4','5'}
del dict_example
# 將字典內部清空
dict_example.clear()
當然還有pop()、popitem()等方法。這邊可以自己試一下
dict.pop(keyword)
dict.popitem() 直接刪除末尾的key-value
name = {"1":"2", "3":"4"}
print(name["1"])
# 2
name = {"1":"2", "3":"4"}
print(name["5"] if "5" in name else "查無此鍵")
# 查無此鍵
name = {"1" : "2", "3" : "4"}
get_value = name.get("1")
print(get_value)
# 2
none_keyword = name.get("5", "沒有此key值")
print(none_keyword)
# 沒有此key值
在使用get()的時候,如果沒有找key,也就是key不存在的時候,得到的結果就是默認值
# 需要用dict.items()函式獲得字典的鍵值對列表
name = {"1" : "2", "3" : "4"}
for item in name.items():
print(item)
# ('1', '2')
# ('3', '4')
name = {"1" : "2", "3" : "4", "5" : "6"}
for key, value in name.items():
print(key, " 的下一個是 ", value)
# 1 的下一個是 2
# 3 的下一個是 4
# 5 的下一個是 6
這邊也提供了values()、keys(),用於返回值、鍵
keys()會返回 ["鍵值", "鍵", ......]
values()回返回 dict_values(["值", "值", ......])
name = {"1" : "2", "3" : "4", "5" : "6"}
name['7'] = '8'
print(name)
# {'1': '2', '3': '4', '5': '6', '7': '8'}
name = {"1" : "2", "3" : "4", "5" : "6"}
name["1"] = '0'
print(name)
# {'1': '0', '3': '4', '5': '6'}
name = {"1" : "2", "3" : "4", "5" : "6"}
del name['1']
print(name)
# {'3': '4', '5': '6'}
import random
randdict = {i : random.randint(0, 100) for i in range(1, 5)}
print(randdict)
# {1: 35, 2: 88, 3: 38, 4: 77}
集合分為兩種,可變集合、不可變集合,本文已可變集合為主,也就是set函數的應用
name = {1, 2, 3, 6, 5, 0}
print(name)
# {0, 1, 2, 3, 5, 6}
set()是無序的,所以每次輸出的排序可能不同,不用在意
# setname = set(iteration)
name = set([1, 1, 2, 3, 4, 4])
print(name)
# {1, 2, 3, 4}
當出現重複元素時,會刷掉
name = set([0, 1, 2, 3])
name.add(4)
print(name)
# {0, 1, 2, 3, 4}
name = set([0, 1, 2, 3, 4, 5])
name.remove(0)
print(name)
# {1, 2, 3, 4, 5}
name.pop()
print(name)
# {2, 3, 4, 5}
name.clear()
print(name)
# set()
交集使用「&」
合集使用「|」
差集使用「-」
對稱差集使用「^」
name = set([0, 1, 2, 3])
example = set([0, 2, 3, 7])
print("交集: ", name & example)
# 交集: {0, 2, 3}
print("合集: ", name | example)
# 合集: {0, 1, 2, 3, 7}
print("差集: ", name - example)
# 差集: {1}