HDU - 3652 B-number 數位dp + 記憶話搜尋
字典是另一種可變容器模型,且可儲存任意型別物件。
字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵一般是唯一的,如果重複最後的一個鍵值對會替換前面的,值不需要唯一。
>>> dict = {'a': 1, 'b': 2, 'b': '3'}
>>> dict['b']
'3'
>>> dict
{'a': 1, 'b': '3'}
值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。
一個簡單的字典例項:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
也可如此建立字典:
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
訪問字典中的值
把相應的鍵放入熟悉的方括號
例項
#!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} print "dict['Name']: ", dict['Name'] print "dict['Age']: ", dict['Age']
以上例項輸出結果:
dict['Name']: Zara
dict['Age']: 7
修改字典的值
向字典新增新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對
例項
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8 # 更新
dict['School'] = "RUNOOB" # 新增
print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']
以上例項輸出結果:
dict['Age']: 8
dict['School']: RUNOOB
刪除字典元素
能刪單一的元素也能清空字典,清空只需一項操作。
顯示刪除一個字典用del命令,如下例項:
例項
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 刪除鍵是'Name'的條目
dict.clear() # 清空字典所有條目,字典變為空字典{}
del dict # 刪除字典,在列印檢視dict時表示未定義報錯
字典的特性
1)不允許同一個鍵出現兩次。建立時如果同一個鍵被賦值兩次,後一個值會被記住,等同於修改字典值。
2)鍵必須不可變,所以可以用數字,字串或元組充當,所以用列表就不行。
字典中常用內建方法
1)dict.clear()
刪除字典內所有元素。變為空字典{}
2)dict.get(key, default=None)
返回指定鍵的值,如果值不在字典中返回default值
3)dict.keys()
以列表返回一個字典所有的鍵,列表形式
4)dict.values()
以列表返回字典中的所有值,列表形式
5)dict.items()
以列表返回可遍歷的(鍵, 值) 元組陣列,列表形式
字典按鍵和值排序
例項:
dic = {'a': 31, 'bc': 5, 'c': 3, 'asd': 4, 'aa': 74, 'd': 0}
# 下面是按照鍵從小到大排序
dic_key_sort = sorted(dic.items(), key=lambda x: x[0])
print(dic_key_sort)
# 下面是按照值從大到小排序的,預設reverse是False從小到大
dic_value_sort = sorted(dic.items(), key=lambda x: x[1], reverse=True)
print(dic_value_sort)
以上例項輸出結果:
[('a', 31), ('aa', 74), ('asd', 4), ('bc', 5), ('c', 3), ('d', 0)]
[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)]
一下我們分解程式碼(分節按值排序程式碼):
dic.items()得到字典的鍵值對元組的列表[(key1, value1), (key2, value2),...]
然後利用sorted()方法,通過key這個引數設定按照鍵還是值
reverse引數預設False從小到大排序