日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python列表嵌套字典取值_我的 python 学习历程-Day05 字典/字典的嵌套

發布時間:2024/7/23 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python列表嵌套字典取值_我的 python 学习历程-Day05 字典/字典的嵌套 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、字典的初識

  • 為什么要有字典
    字典與列表同屬容器型數據類型,同樣可以存儲大量的數據,但是,列表的數據關聯性不強,并且查詢速度比較慢,只能按照順序存儲。
  • 什么是字典
    • 先說一下什么叫可變與不可變的數據類型分類
      • 不可變(可哈希)數據類型:int, str, bool, tuple。
      • 可變(不可哈希)數據類型:list, dict, set。
    • 字典是Python語言中的映射類型,他是以{}括起來,里面的內容是以鍵值對的形式儲存的
      • 字典的基本格式
        dic = {'Dylan': {'name':'Dylan', 'age': 18, 'sex':'男'}, 'city':['beijing', 'qingdao', 'jiangsu'] } # 這是一個嵌套的字典
      • Key(鍵):不可變(可哈希)的數據類型,并且鍵是唯一的,不重復的。
      • value(值):任意數據類型(int, str, bool, tuple, list, dict, set),包括后面要學的實例對象等等。
      • 字典在3.5x版本之前(包括3.5)是無序的。
      • 字典在3.6x會按照次建立字典的順序排列,學術上不認為是有序的。
      • 字典在3.7x 以后都是有序的了。
      • 字典的優點:查詢速度非常快,存儲關聯性的數據。
      • 字典的缺點:以空間換時間。也就是說,它的內存消耗非常大。
  • 字典的創建
    # 面試會考 # 方式一: dic = dict((('one', 1), ('two', 2), ('three', 3))) print(dic) # {'one': 1, 'two': 2, 'three': 3} # 方式二: dic = dict(one=1, two=2, three=3) print(dic) # {'one': 1, 'two': 2, 'three': 3} # 方式三: dic = dict({'one': 1, 'two': 2, 'three': 3}) print(dic) # {'one': 1, 'two': 2, 'three': 3}
  • 字典的合法性
    # 合法 dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帥哥', '美?'], (1, 2, 3): '麻花藤'} print(dic[123]) # 456 print(dic[True]) # 999 print(dic['id']) # 1 print(dic['stu']) # ['帥哥', '美?'] print(dic[(1, 2, 3)]) # 麻花藤 # 不合法 dic = {[1, 2, 3]: '周杰倫'} # list是可變的. 不能作為key dic = {{1: 2}: "哈哈哈"} # dict是可變的. 不能作為key dic = {{1, 2, 3}: '呵呵呵'} # set是可變的, 不能作為key

二、字典的增、刪、改、查

  • 字典的增
    • 直接增加 有則改之,無則增加
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} dic['sex'] = '男' # 原字典里沒有這個鍵值對,所以會新增加這個鍵值對。 dic['age'] = 22 # 原字典里己經有這個鍵了,所以會更改原字典這個鍵的值。 print(dic) # {'name': 'Dylan', 'age': 22, 'hobby_list': ['IT', '妹子', '旅行'], 'sex': '男'}
    • dic.setdefault('鍵','值') 有則不變,無則增加
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} dic.setdefault('hobby') # 新增一個鍵,值為空(None) dic.setdefault('hobby', '汽車') # 這條是要給 hobby 加個值,但是,上一條己經創建了一個同樣的鍵,所以。這一行的值是不能加進去的,可以用改的方法,改變原來的空值為這一條的值。 dic.setdefault('age', 33) # 這條跟上一條同理,原字典中己有的鍵值不會被增加修改。 print(dic) # {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行'], 'hobby': None}
  • 字典的刪
    • dic.pop('鍵','第二個參數值')
      # pop 按照鍵刪除鍵值對, 有返回值 *** # 設置第二個參數則無論字典中有無此鍵都不會報錯 dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} dic.pop('name') # 這是 pop 的基本用法 ret = dic.pop('name') # 刪除字典中 name 鍵 和 Dylan 值,并將刪除的值賦值給 ret,但是,由于上一條中己經執行了一次刪除 name,這一條找不到原字典中的 name 鍵,所以.程序會報錯.如下: ### Traceback (most recent call last): File "/Users/yaoyaoba/Full_stack_22/day04/練習.py", line 145, in <module> ret = dic.pop('name') KeyError: 'name' ### ret1 = dic.pop('hobby','沒有此鍵') # 為了避免報錯,通常我們會再加上一個返回參數,可以自定義.格式如些條. print(ret) # Dylan print(ret1) # 沒有此鍵 print(dic) # {'age': 18, 'hobby_list': ['IT', '妹子', '旅行']}
    • dic.clear() 清空
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} dic.clear() # 清空字典內的鍵值對,并留下一個空字典。 print(dic) # {}
    • del 刪除字典中的某個鍵值對/或者刪除整個字典
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} del dic['age'] print(dic) del dic['name1'] # 如果要刪除的鍵沒有在字典中,則會報錯,所以一般不用這個方法刪除鍵值對。 ### Traceback (most recent call last): File "/Users/yaoyaoba/Full_stack_22/day04/練習.py", line 143, in <module> del dic[name1] NameError: name 'name1' is not defined ### del dic # 將整個字典刪掉 print(dic) # 打印會報錯 ### Traceback (most recent call last): File "/Users/yaoyaoba/Full_stack_22/day04/練習.py", line 144, in <module> print(dic) NameError: name 'dic' is not defined ###
  • 字典的改
    • 直接改
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} dic['age'] = 33 # 將字典中'age'鍵的值改為'33' print(dic)
  • 字典的查
    • 通過鍵查詢
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} print(dic['name']) # Dylan # 如果所查的鍵沒在字典里,會報錯。 print(dic['name2']) ### Traceback (most recent call last): File "/Users/yaoyaoba/Full_stack_22/day04/練習.py", line 143, in <module> print(dic['name2']) # Dylan KeyError: 'name2' ###
    • dic.get('鍵') 查詢并返回一個結果,可以賦值給變量
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} v = dic.get('name') print(v) # Dylan v = dic.get('name1') print(v) # None (如果字典中沒有這個鍵,將返回一個空值,避免報錯) v = dic.get('name2', '沒有此鍵') # 如果字典中沒有這個鍵值對,可以自定義一個反回的值。 print(v) # 沒有此鍵
  • 字典的三個特殊用法
    • dic.keys() 查找字典中所有的鍵
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} print(dic.keys(), type(dic.keys())) # dict_keys(['name', 'age', 'hobby_list']) <class 'dict_keys'> # 可以轉化為列表 print(list(dic.keys())) # ['name', 'age', 'hobby_list'] for key in dic.keys(): print(key) # 打印字典中每個鍵 for key in dic: print(key) # 打印字典中每個鍵(等價于上面的方法)
    • dic.values() 查找字典中所有的值
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} print(dic.values()) # dict_values(['Dylan', 18, ['IT', '妹子', '旅行']]) print(list(dic.values())) # ['Dylan', 18, ['IT', '妹子', '旅行']] for value in dic.values(): print(value) # 打印字典中每個值
    • dic.items() 查找字典中所有的鍵和值 (以字典包裹元組的形式)
      dic = {'name': 'Dylan', 'age': 18, 'hobby_list': ['IT', '妹子', '旅行']} print(dic.items()) # dict_items([('name', 'Dylan'), ('age', 18), ('hobby_list', ['IT', '妹子', '旅行'])]) for key,value in dic.items(): print('鍵:', key, '值:' , value) # 打印結果: 鍵: name 值: Dylan 鍵: age 值: 18 鍵: hobby_list 值: ['IT', '妹子', '旅行'] # 這里涉及到一個分別賦值的問題: 面試題: a = 18 b = 12 a, b = b, a # 等價于 a, b = 12, 18 print(a, b)

三、字典的嵌套
? 字典的嵌套是非常重要的知識點,這個必須要建立在熟練使用字典的增刪改查的基礎上,而且字典的嵌套才是咱們在工作中經常會遇到的字典,工作中遇到的字典不是簡簡單單一層,而就像是蔥頭一樣,一層接一層,但一般都是很有規律的嵌套,那么接下來我們就學習一下字典的嵌套:
dic = { 'name':'汪峰', 'age':48, 'wife':[{'name':'國際章','age':38}], 'children':{'girl_first':'小蘋果','girl_second':'小怡','girl_three':'頂頂'} } 1. 獲取汪峰的名字。 2.獲取這個字典:{'name':'國際章','age':38}。 3. 獲取汪峰妻子的名字。 4. 獲取汪峰的第三個孩子名字。 # 解題思路: # 1.獲取汪峰的名字。: 這個比較簡單,汪峰就是dic的一個鍵對應的值,我們通過這個key就可以獲取到汪峰這個值。 name = dic['name'] print(name) # 汪峰 # 2. 獲取這個字典{'name':'國際章','age':38}: 想要獲取這個字典,先要看字典從屬于誰?這個字典從屬于一個列表,而這個列表是字典wife對應的鍵,所以咱們應該先通過wife獲取到對應的這個列表,然后通過這個列表按照所以取值取到對應的這個字典。 l1 = dic['wife'] # 先獲取到這個列表 di = l1[0] # 列表按照索引取值,這個字典是列表的第一個元素,所以通過索引獲取到這個字典 print(di) # {'name': '國際章', 'age': 38} # 3. 獲取汪峰的妻子名字: 還是按照上一題的思路:想要獲取汪峰妻子的名字:國際章,那么他是一個字典的鍵對應的值,所以我們通過'name'這個鍵就可以獲取到對應的值,這個題的難點是獲取到這個小字典,而上一個題我們已經獲取了這個小字典,所以在上面的基礎上再執行就可以了。 di = dic['wife'][0] # 這個是上一次題獲取的小字典的代碼 wife_name= di['name'] # 通過小字典然后再通過鍵就能獲取到對應的值 print(wife_name) # 國際章 # 當然咱們可以簡化: wife_name = dic['wife'][0]['name'] print(wife_name) # 國際章 # 4.獲取汪峰的第三個孩子名字: 汪峰的孩子們是在一個字典中的,你要想獲取汪峰的第三個孩子,你應該先獲取到它從屬于的這個字典,然后再通過這個字典獲取第三個孩子的名字。 dic2 = dic['children'] # 先獲取這個字典 name = dic2['girl_three'] # 在通過這個字典獲取第三個孩子的名字 print(name) # 頂頂 # 當然你可以簡化: name = dic['children']['girl_three'] print(name) # 頂頂

最后,小編想說:我是一名python開發工程師,整理了一套最新的python系統學習教程,想要這些資料的可以關注私信小編“01”即可,希望能對你有所幫助。

總結

以上是生活随笔為你收集整理的python列表嵌套字典取值_我的 python 学习历程-Day05 字典/字典的嵌套的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。