Python全棧__字典及其操作

來源:互聯網
上載者:User

標籤:雜湊   hash   add   list   覆蓋   items   其他   分類   ash   

1、字典

  字典,基礎資料類型之一,{}以索引值對的形式儲存資料。

  以key : value 形式儲存資料。例如,name 為 key,Laonanhai 為 value。

dic = {‘name‘: ‘Laonanhai‘,        ‘age‘: 45,       ‘name_list‘: [‘反面教材‘, ‘俊俊‘, ...]       }

 

  Python中唯一的映射類型。用以儲存大量的關係型資料。

  資料類型的分類:

    可變類:

      可變(不可雜湊hash):list、dict、set。例如list = [11, 222, 333]

      不可變(可雜湊hash):str、int、tuple、bool。例如name = ‘alex‘

    容器類:

      容器類的資料類型:list、dict、tuple。例如l1 = [11, True, ‘alex‘, [22, 33, 44]]

      非容器類的資料類型:int、str、bool。例如s1 = ‘[11, 22, 33]‘

  字典的key必須是不可變的資料類型,是唯一的。

  hash演算法:

    字典的鍵key通過hash錶轉換為數字,採用二分尋找查詢數字。

  字典的value可以使任意的資料類型。

  字典的查詢速度非常快,可以儲存大量的關係型資料。

  字典在Python 3.5 包含3.5之前都是無序的,但在3.6之後是有序的。

2、字典的增刪改查及其他動作

  鍵唯一  當存在一樣的鍵時後面的覆蓋前邊的。例如:

dic = {        ‘name‘: ‘alex‘,        ‘name‘: ‘WuSir‘}print(dic)

 

 

  鍵必須是不可變的可雜湊的資料類型。當鍵為可變的不可雜湊的資料類型是,輸出提示錯誤。例如:

dic = {        ‘name‘: ‘alex‘,        [1, 2, 3]: ‘value‘}print(dic)

 

 

  2、1 增  1、__[‘A‘] = ‘B‘  A為鍵,B為值。直接增加,有則覆蓋,無則添加。

    無則添加。

dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}dic[‘sex‘] = ‘Laddy_boy‘print(dic)

 

 

    有則覆蓋。

dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}dic[‘name‘] = ‘alex‘print(dic)

 

 

  2、 __.setdefault(‘A‘,‘B‘)  A為鍵,B為值。  有責不變,無則添加。

  無則添加。

  當只添加A時,對應的B值預設為None。

dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}dic.setdefault(‘sex‘)print(dic)

 

 

  無則添加。

dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}dic.setdefault(‘sex‘,‘Laddyboy‘)print(dic)

 

 

  有責不變。

dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}dic.setdefault(‘name‘, ‘alex‘)print(dic)

 

 

  2、2 刪    1、__.pop(‘A‘)  有傳回值,返回的是鍵對應的值。
dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}print(dic.pop(‘age’))
print(dic)

 

 

  當沒有此鍵時,可修改預設傳回值。

dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}print(dic.pop(‘age1‘, ‘沒有此鍵...‘))print(dic)

 

    2、__.clear()  清空字典。
dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}dic.clear()print(dic)

 

 

    3、__.popitem()  隨機刪除,有傳回值,傳回值為元組,裡面是刪除的索引值對。

  在Python 3.5及包含3.5之前是無序刪除,Python 3.6 以後是刪除字典最後一位。

dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}print(dic.popitem())print(dic)

 

 

    4、del

      (1)del __  刪除整個字典。

dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}del dicprint(dic)

 

 

      (2)del dic[‘A‘]  按照鍵A刪除對應的索引值對。

dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}del dic[‘name‘]print(dic)

 

 

  2、3 改    1、__[‘A‘] = ‘B‘  有則覆蓋,沒有則添加。 
dic = {‘name‘: ‘老男孩‘, ‘age‘: 56, ‘hobby‘: ‘women‘}dic[‘name‘] = ‘Alex‘print(dic)

 

 

      2、A.update(B)  AB分別為兩個字典。兩個字典的更新。  將B字典的內容覆蓋添加到A裡面,B不變。
dic = {"name": "jin", "age": 18, "sex": "male"}dic2 = {"name": "alex", "weight": 75}dic2.update(dic)print(dic)print(dic2)

 

 

  2、4 查    1、__[‘A"]  A為鍵。
dic = {"name": "jin", "age": 18, "sex": "male"}print(dic[‘name‘])

 

 

  當字典中沒有尋找的鍵是,列印報錯。

dic = {"name": "jin", "age": 18, "sex": "male"}print(dic[‘name1‘])

 

 

    2、__.get(‘A‘)  A為鍵。
dic = {"name": "jin", "age": 18, "sex": "male"}print(dic.get(‘name‘))

 

 

  當尋找的鍵字典裡沒有時,預設列印輸出None。例如:

dic = {"name": "jin", "age": 18, "sex": "male"}print(dic.get(‘name1‘))

 

 

  當尋找的鍵字典裡面沒有時,可將預設輸出修改為自己需要的內容。例如:

dic = {"name": "jin", "age": 18, "sex": "male"}print(dic.get(‘name1‘,‘SB,沒有此鍵‘))

 

 

    3、for迴圈  輸出鍵。
dic = {"name": "jin", "age": 18, "sex": "male"}for i in dic:        print(i)

 

 

    4、__.keys()  列印輸出的內容為鍵,列印輸出的格式為 dict_keys
dic = {"name": "jin", "age": 18, "sex": "male"}print(dic.keys(), type(dic.keys()))

 

 

    5、__.values()  列印輸出的內容為值,列印輸出的格式為dict_values。
dic = {"name": "jin", "age": 18, "sex": "male"}print(dic.values(), type(dic.values()))

 

 

    6、__.items()  列印輸出的內容為索引值對,放在元組內。列印輸出的格式為dict_items
dic = {"name": "jin", "age": 18, "sex": "male"}print(dic.items(), type(dic.items()))

 

 

  使用for迴圈將鍵迴圈列印出來。

dic = {"name": "jin", "age": 18, "sex": "male"}for key in dic.keys():        print(key)

 

 

  將鍵轉換成列表列印出來。

dic = {"name": "jin", "age": 18, "sex": "male"}l_key = list(dic.keys())print(l_key)

 

 

  使用for迴圈將值迴圈列印出來。

dic = {"name": "jin", "age": 18, "sex": "male"}for i in dic.values():        print(i)

 

 

  將輸出轉換成列表列印出來。

dic = {"name": "jin", "age": 18, "sex": "male"}l_values = list(dic.values())print(l_values)

 

 

  7、分別賦值概念
a, b = 1, 2print(a, b)

 

 

a, b = (‘alex‘, ‘34‘)print(a, b)

 

 

a, b = [‘alex‘, ‘34‘]print(a,b)

 

 

  有如下:

    a = 1

    b = 3

  用一行代碼實現a b值互換。

a = 1b = 3a, b = b, aprint(a, b)

 

 

for i in [22, 33, 44]:        print(i)

 

 

for i in [(11, 22), (33, 44), (55, 66)]:        print(i)

 

 

k, v = (‘name‘, ‘老男孩‘)print(k, v)

 

 

dic = {"name": "jin", "age": 18, "sex": "male"}for k, v in dic.items():        print(k, v)

 

 

3、字典的嵌套
dic = {    ‘name_list‘: [‘碗蓉‘, ‘俊俊‘, ‘爽妹‘],    ‘status‘: None,    ‘personal_msg‘: {        ‘name‘: ‘反面教材‘,        ‘age‘: 25,        ‘hobby_list‘: [‘抽煙‘, ‘喝酒‘, ‘燙頭‘],    }}

   1、給dic添加一個索引值對,學校:老男孩。

dic = {    ‘name_list‘: [‘碗蓉‘, ‘俊俊‘, ‘爽妹‘],    ‘status‘: None,    ‘personal_msg‘: {        ‘name‘: ‘反面教材‘,        ‘age‘: 25,        ‘hobby_list‘: [‘抽煙‘, ‘喝酒‘, ‘燙頭‘],    }}dic[‘學校‘] = ‘老男孩‘print(dic)

 

 

  2、將status對應的值改為True。

dic = {    ‘name_list‘: [‘碗蓉‘, ‘俊俊‘, ‘爽妹‘],    ‘status‘: None,    ‘personal_msg‘: {        ‘name‘: ‘反面教材‘,        ‘age‘: 25,        ‘hobby_list‘: [‘抽煙‘, ‘喝酒‘, ‘燙頭‘],    }}dic[‘status‘] = Trueprint(dic)

 

 

  3、給name_list追加一個元素‘平平’。

dic = {    ‘name_list‘: [‘碗蓉‘, ‘俊俊‘, ‘爽妹‘],    ‘status‘: None,    ‘personal_msg‘: {        ‘name‘: ‘反面教材‘,        ‘age‘: 25,        ‘hobby_list‘: [‘抽煙‘, ‘喝酒‘, ‘燙頭‘],    }}dic[‘name_list‘].append(‘平平‘)print(dic)

 

 

  4.給personal_msg對應的字典添加一個索引值對sex:男。

dic = {    ‘name_list‘: [‘碗蓉‘, ‘俊俊‘, ‘爽妹‘],    ‘status‘: None,    ‘personal_msg‘: {        ‘name‘: ‘反面教材‘,        ‘age‘: 25,        ‘hobby_list‘: [‘抽煙‘, ‘喝酒‘, ‘燙頭‘],    }}dic[‘personal_msg‘][‘sex‘] = ‘男‘print(dic)

 

 

  5、將hobby_list對應的列表中的燙頭改成唱歌。

dic = {    ‘name_list‘: [‘碗蓉‘, ‘俊俊‘, ‘爽妹‘],    ‘status‘: None,    ‘personal_msg‘: {        ‘name‘: ‘反面教材‘,        ‘age‘: 25,        ‘hobby_list‘: [‘抽煙‘, ‘喝酒‘, ‘燙頭‘],    }}dic[‘personal_msg‘][‘hobby_list‘][-1] = ‘唱歌‘print(dic)

 

 

Python全棧__字典及其操作

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.