Day_05 字典知識整理

来源:https://www.cnblogs.com/hfbk/archive/2018/07/06/9275090.html
-Advertisement-
Play Games

一. 字典的簡單介紹字典(dict)是python中唯一的一個映射類型.他是以{ }括起來的鍵值對組成. 在dict中key是 唯一的. 在保存的時候, 根據key來計算出一個記憶體地址. 然後將key-value保存在這個地址中. 這種演算法被稱為hash演算法,所以, 切記, 在dict中存儲的key ...


. 字典的簡單介紹
字典(dict)是python中唯一的一個映射類型.他是以{ }括起來的鍵值對組成. 在dict中key是

唯一的. 在保存的時候, 根據key來計算出一個記憶體地址. 然後將key-value保存在這個地址中.

這種演算法被稱為hash演算法,所以, 切記, 在dict中存儲的key-value中的key'必須是可hash的,

如果你搞不懂什什麽是可哈希, 暫時可以這樣記, 可以改變的都是不可哈希的,

那麼可哈希就意味著不可變. 這個是為了了能準確的計算記憶體地址⽽而規定的.

已知的可哈希(不可變)的數據類型: int, str, tuple, bool

不可哈希(可變)的數據類型: list, dict, set

簡而言之:   字典     是用大括弧{} 括起來. 內部使用key:value的形式來保存數據,不是按照我們保存的順序保存的, 無序的

 

語法 :
{key1: value1, key2: value2....}

 

註意: key必須是不可變(可哈希)的. value沒有要求.可以保存任意類型的數據

 

 1. 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

  註意:    dict保存的數據不是按照我們添加進去的順序保存的. 是按照hash表的順序保存的. 而hash表

不是連續的. 所以不能進行切片工作. 它只能通過key來獲取dict中的數據

 

  3. 字典的常用方法

  1. keys() 返回所有字典的key的集合(高仿列表)

  2. values() 返回所有的value的集合

  3. items() 返回鍵值對. 元組

二.字典的增刪改查和其他相關操作

  1.增

    dic = { }

    dic = ['name'] = '周潤發'      # 如果dict中沒有出現這個key, 就會新增一個key-value的組合進dict

    dic['age'] = 18

    print(dic)   =====>    {'name' : '周潤發' , 'age' : 18}   

 

    如果dict中沒有出現過這個key-value. 可以通過setdefault設置預設值

    dic.setdefault('李嘉誠') # 也可以往里面設置值.

    dic.setdefault("李嘉誠", "房地產") # 如果dict中已經存在了了. 那麼setdefault將不不會起作用

    

    dic = {"及時雨":"宋江", "小李廣":"花榮", "黑旋風":"李逵", "易大師":"劍聖"}
    dic["大寶劍"] = "蓋倫" # 新增
    dic["及時雨"] = "天老爺" # 修改
    print(dic["易大師是個腦殘"])       # 查詢, 如果key不存在,報錯
    print(dic.get("易大師", "餘小C"))        # 如果key不存在. 返回None
    get()      #可以通過key來獲取value的值. 那麼如果key不存在. 返回None.        可以給出一個預設值. 當key不存在的時候返回預設值

 

  2.刪

    dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帥哥', '美女'], (1, 2, 3): '麻花藤'}

    ret = dic.pop('name')

    print(ret)   =====>    sylar

 

    del dic['name']

    print(dic) ===>  {123: 456, True: 999, "id": 1, "age": 18, "stu": ['帥哥', '美女'], (1, 2, 3): '麻花藤'}

    #   del   刪除的時候不能得到反還值

    

    # 隨機刪除.
    ret = dic.popitem()

    # 清空字典中的所有內容

    dic.clear()

 

  3.改  

    dic = {"id": 123, "name": 'sylar', "age": 18}

    dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}

    dic.update(dic1)         # 把dic1中的內容更更新到dic中. 如果key重名. 則修改替換. 如果不存在key, 則新增.

    print(dic)   =====>     {"id": 123, "name": 'sylar', "age": 18, "id": 456, "name": "麻花藤", "ok": "wtf"}

    print(dic1) =====>     {"id": 456, "name": "麻花藤", "ok": "wtf"}

 

 

  4.查詢

    dic =  {"id": 123, "name": 'sylar', "age": 18, "id": 456, "name": "麻花藤", "ok": "wtf"}

    查詢一般用key來查找具體的數據

    print(dic['name'])

    # print(dic['sylar']) # 報錯

    print(dic.get("ok"))

      print(dic.get("sylar"))      # None

      print(dic.get("sylar", "牛B"))     # 牛B

    Python 字典(Dictionary) get() 函數返回指定鍵,如果鍵不在字典中返回預設值。

 

  5.其他操作

    dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科比"}

    print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不用管它是什麼.當成list來用就行

      #  返回所有字典的key的集合(高仿列表)

 

    for key in dic.keys():

    print(key)

    print(dic.values()) # dict_values([123, 'sylar', 18, '科比'])       # 一樣. 也當list來用

 

    for value in dic.values():

    print(value)

    print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age',18), ('ok', '科比')])        #     這個東西也是list. 只不不過list中裝的是tuple

    for key, value in dic.items(): # ?? 這個是解構

    print(key, value)

    

    解構:
    a, b = (1, 2)  =====>  a = 1      b  =  2

    a = (1, 2)    


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 效果: 我沒有弄文件夾保存,因為皮膚與英雄都是一一對應,這樣子更加方便操作。 點擊下載皮膚後,會自動從官網下載一個json文件,所以出了新英雄、新皮膚軟體會自動更新。高清圖: 但是有個別新皮膚官網也沒有提供數據,找不到新皮膚下載的選擇項時,點擊影藏皮膚獲取按鈕輸入英雄名字,再點擊隱藏皮膚下載即可。 ...
  • 五、異常 異常概念總結: 練習一:異常的體系 問題: 1. 請描述異常的繼承體系 2. 請描述你對錯誤(Error)的理解 3. 請描述你對異常(Expection的理解) 4. 請描述你對運行時異常(RuntimeException)的理解 答: 1. 異常繼承體係為:異常的根類是 java.la ...
  • 對於CPU密集型的程式,可以使用multiprocessing的Process,Pool等封裝好的類,通過多進程的方式實現並行計算。但是因為進程中的通信成本比較大,對於進程之間需要大量數據交互的程式效率未必有大的提高。 4、 針對迴圈的優化 每種編程語言都會強調需要優化迴圈。當使用Python的時候 ...
  • 2018-07-06 21:06:16 ...
  • 我們之前學習創建線程有Thread和Runnable兩種方式,但是兩種方式都無法獲得執行的結果。 而Callable和Future在任務完成後得到結果。 Future是一個介面,表示一個任務的周期,並提供了相應的方法來判斷是否已經完成或者取消任務,以及獲取任務的結果和取消任務。 FutureTask ...
  • 數組是一個變數,存儲相同數據類型的一組數據 聲明一個變數就是在記憶體空間划出一塊合適的空間 聲明一個數組就是在記憶體空間划出一串連續的空間 數組長度固定不變,避免數組越界 數組是靜態分配記憶體空間的,所有元素存放在一組連續的存儲單元中,一旦分配,不可更改,不便於擴展, 數組便於查找和修改,不利於插入和刪除 ...
  • 先看一下項目圖,基本就理解了整合的內容 這次主角不再是Mybats的配置文件SqlMapConfig.xml了,而是Spring的applicationContext.xml applicationContext.xml Spring同樣開始整合數據源datasource IoC控制反轉生成sqlS ...
  • RabbitMQ系列目錄 1. "RabbitMQ在Ubuntu上的環境搭建" 2. "深入解讀RabbitMQ工作原理及簡單使用" 3. Rabbit的幾種工作模式介紹與實踐 4. Rabbit事務與消息確認 5. Rabbit集群搭建 6. 使用HAProxy為RabbitMQ搭建負載均衡 7. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...