pythonday5

来源:https://www.cnblogs.com/panda-pandeyong/archive/2018/07/06/9275210.html
-Advertisement-
Play Games

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


一. 字典的簡單介紹

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

    在保存的時候, 根據key來計算出一個記憶體地址.

    然後將key-value保存在這個地址中. 這種演算法被稱為hash演算法, 所以, 切記, 在dict中存儲的key-value

    中的key'必須是可hash的, 如果你搞不懂什什麽

    是可哈希, 暫時可以這樣記, 可以改變的都是不可哈希的, 那麼可哈希就意味著不可變. 這個是為了能

    準確的計算記憶體地址而規定的. 

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

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

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

    # 合法
         dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帥 哥', '美女'], (1, 2, 3): '麻花藤'}
        print(dic[123]) 
        print(dic[True]) 
        print(dic['id']) 
        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中的數據

 

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

  1增加:

        dic = {} 
        dic['name'] = '周潤發'  # 如果dict中沒有出現這個key, 就會新增一個key-value的組合進dict 
        dic['age'] = 18 
        print(dic) 
        # 如果dict中沒有出現過這個key-value. 可以通過setdefault設置預設值 
        dic.setdefault('李嘉誠')   # 也可以往里面設置值,當字典中沒有該key時,返回設置的value. 
        dic.setdefault("李嘉誠", "房地產")  # 如果dict中已經存在了. 那麼setdefault將不會起作用 
        print(dic)
       

  2. 刪除

        ret = dic.pop("jay") 
        print(ret) 
        del dic["jay"] 
        print(dic) 
        # 隨機刪除. 
        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)
  
    print(dic1)

  4. 查詢        

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

    dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帥 哥', '美女'], (1, 2, 3): '麻花藤'} 
    print(dic['name']) 
    # print(dic['sylar'])     # 報錯 
    print(dic.get("ok"))
    print(dic.get("sylar"))      # None 
    print(dic.get("sylar", "牛B"))   # 牛B

    註意:setdefault()

        1>先判斷原子典中是否有key,若沒有執行新增,若有不增加;

        2>用此key去字典中查詢,返回查詢結果

  

  5. 其他相關操作

 

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

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

        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

        print(a, b)



        (c, d) = 3, 4

        print(c, d)



        e, f = [1, 2, 3]    # 解構的時候註意數量量必須匹配

        print(e, f)

 

三. 字典的嵌套

        # 字典的嵌套 
        dic1 = {
                "name": "汪峰", 
                "age": 18, 
                "wife": {
                     "name": '章子怡', 
                    "age": 28    
                    },
                "children": ['第一個毛孩子', '第二個毛孩子'], 
               "desc": '峰    哥不會告我吧. 沒關係. 我想上頭條的' 
            }  
        print(dic1.get("wife").get("name"))
        print(dic1.get("children")) 
        print(dic1.get("children")[1])                

 


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

-Advertisement-
Play Games
更多相關文章
  • 對於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. ...
  • 一. 字典的簡單介紹字典(dict)是python中唯一的一個映射類型.他是以{ }括起來的鍵值對組成. 在dict中key是 唯一的. 在保存的時候, 根據key來計算出一個記憶體地址. 然後將key-value保存在這個地址中. 這種演算法被稱為hash演算法,所以, 切記, 在dict中存儲的key ...
  • 上一篇:LeetCode鏈表相加-Python<二> 以前沒怎麼做過演算法題,來來去去都是那些迴圈,所以先從數組簡單題開始做。 這兩天最大心得: 總在邊界里考慮不周到,導致錯誤 做暈的時候,連變數名都跟參數重名了 有時候,開始考慮的情況太粗糙 幸好,都找出了問題,並通過。下麵貼貼代碼: 題目:無重覆字 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...