python 字典

来源:http://www.cnblogs.com/kungfupanda/archive/2016/01/14/5129938.html
-Advertisement-
Play Games

這篇文章主要介紹了python中的字典詳細介紹,字典是Python中最強大的數據類型之一,本文講解了什麼是字典、創建字典和給字典賦值 、字典的基本操作、映射類型操作符、映射相關的函數、字典的方法等內容,需要的朋友可以參考下一、什麼是字典?字典是Python語言中唯一的映射類型。映射類型對象里哈希值(...


這篇文章主要介紹了python中的字典詳細介紹,字典是Python中最強大的數據類型之一,本文講解了什麼是字典、創建字典和給字典賦值 、字典的基本操作、映射類型操作符、映射相關的函數、字典的方法等內容,需要的朋友可以參考下

一、什麼是字典?

字典是Python語言中唯一的映射類型。

映射類型對象里哈希值(鍵,key)和指向的對象(值,value)是一對多的的關係,通常被認為是可變的哈希表。

字典對象是可變的,它是一個容器類型,能存儲任意個數的Python對象,其中也可包括其他容器類型。

字典類型與序列類型的區別:

1.存取和訪問數據的方式不同。
2.序列類型只用數字類型的鍵(從序列的開始按數值順序索引);
3.映射類型可以用其他對象類型作鍵(如:數字、字元串、元祖,一般用字元串作鍵),和序列類型的鍵不同,映射類型的鍵直4.接或間接地和存儲數據值相關聯。
5.映射類型中的數據是無序排列的。這和序列類型是不一樣的,序列類型是以數值序排列的。
6.映射類型用鍵直接“映射”到值。

字典是Python中最強大的數據類型之一。

二、如何創建字典和給字典賦值

簡單地說字典就是用大括弧包裹的鍵值對的集合。(鍵值對也被稱作項)
一般形式:

複製代碼 代碼如下:
adict = {}
adict = {key1:value2, key2:value2, …}


或用dict()函數,如,adict = dict() 或 adict = dict((['x',1],['y',2]))這樣寫對嗎?adict = dict(['x',1],['y',2])。關鍵字參數創建字典,如:adict= dict(name='allen',age='40′)
或用fromkeys()方法,如,adict = {}.fromkeys((‘x','y'), -1) 這樣創建的字典的value是一樣的,若不給值,預設為None。

特點:
1、鍵與值用冒號“:”分開;
2、項與項用逗號“,”分開;
3、字典中的鍵必須是唯一的,而值可以不唯一。

複製代碼 代碼如下:
adict = {‘name':'allen', ‘name':'lucy', ‘age':'40′} 與 bdict = {‘name':'allen', ‘name2′:'allen', ‘age':'40′}


註意:如果字典中的值為數字,最好使用字元串數字形式,如:'age':'040′ 而不用 ‘age':040

三、字典的基本操作

1、如何訪問字典中的值?
adict[key] 形式返回鍵key對應的值value,如果key不在字典中會引發一個KeyError。

2、如何檢查key是否在字典中?

a、has_key()方法 形如:adict.haskey(‘name') 有–>True,無–>False
b、in 、not in   形如:'name' in adict      有–>True,無–>False

3、如何更新字典?

a、添加一個數據項(新元素)或鍵值對
adict[new_key] = value 形式添加一個項
b、更新一個數據項(元素)或鍵值對
adict[old_key] = new_value
c、刪除一個數據項(元素)或鍵值對
del adict[key] 刪除鍵key的項 / del adict 刪除整個字典
adict.pop(key) 刪除鍵key的項並返回key對應的 value值

四、映射類型操作符

標準類型操作符(+,-,*,<,>,<=,>=,==,!=,and,or, not)

a、字典不支持拼接和重覆操作符(+,*)
b、字典的比較操作
先比較字典的長度也就是字典的元素個數
鍵比較
值比較
例子:

複製代碼 代碼如下:
adict = {}
bdict = {‘name':'allen', ‘age':'40′}
cmp(adict, bdict)  < –>-1 or > –>1 or ==  –>0

五、映射相關的函數

1、len() 返回字典的長度
2、hash() 返回對象的哈希值,可以用來判斷一個對象能否用來作為字典的鍵
3、dict() 工廠函數,用來創建字典

六、字典的方法

1、adict.keys() 返回一個包含字典所有KEY的列表;
2、adict.values() 返回一個包含字典所有value的列表;
3、adict.items() 返回一個包含所有(鍵,值)元祖的列表;
4、adict.clear() 刪除字典中的所有項或元素;
5、adict.copy() 返回一個字典淺拷貝的副本;
6、adict.fromkeys(seq, val=None) 創建並返回一個新字典,以seq中的元素做該字典的鍵,val做該字典中所有鍵對應的初始值(預設為None);
7、adict.get(key, default = None) 返回字典中key對應的值,若key不存在字典中,則返回default的值(default預設為None);
8、adict.has_key(key) 如果key在字典中,返回True,否則返回False。 現在用 in 、 not in;
9、adict.iteritems()、adict.iterkeys()、adict.itervalues() 與它們對應的非迭代方法一樣,不同的是它們返回一個迭代子,而不是一個列表;
10、adict.pop(key[,default]) 和get方法相似。如果字典中存在key,刪除並返回key對應的vuale;如果key不存在,且沒有給出default的值,則引發keyerror異常;
11、adict.setdefault(key, default=None) 和set()方法相似,但如果字典中不存在Key鍵,由 adict[key] = default 為它賦值;
12、adict.update(bdict) 將字典bdict的鍵值對添加到字典adict中。

七、字典的遍歷

1、遍歷字典的key(鍵)

複製代碼 代碼如下:
for key in adict.keys():print key


2、遍歷字典的value(值)

複製代碼 代碼如下:
for value in adict.values(): print value


3、遍歷字典的項(元素)

複製代碼 代碼如下:
for item in adict.items():print item


4、遍歷字典的key-value

複製代碼 代碼如下:
for item,value in adict.items(): print ‘key=%s, value=%s' %(item, value)  或   for item,value in adict.iteritems(): print ‘key=%s, value=%s' %(item, value)


註意:for item,value in adict.items(): print ‘key=%s', ‘value=%s', %(item, value) 這種寫法是錯誤的

八、使用字典的註意事項

1、不能允許一鍵對應多個值;
2、鍵必須是可哈希的。


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

-Advertisement-
Play Games
更多相關文章
  • 首先、導入命名空間:using System.Net.Mail;定義發送電子郵件的方法[網上很多不同的,可以對比著看一下,WinForm的也適用]:/// /// 發送電子郵件/// /// 發件人郵箱地址/// 收件人郵箱地址/// 郵件主題/// 郵件內容/// public bool Send...
  • 1、查找空節點//*[not(text())] 表示內容為空的節點//*[count(*)=0] 表示沒有子節點的節點"//*[count(*)=0 and not(text())]" 空節點,表示既沒有內容,也沒有子節點,但未排除包含屬性的節點
  • 一:Helios是什麼 Helios是一套高性能的Socket通信中間件,使用C#編寫。Helios的開發受到Netty的啟發,使用非阻塞的事件驅動模型架構來實現高併發高吞吐量。Helios為我們大大的簡化了Socket編程,它已經為我們處理好了高併發情況下的解包,粘包,buffer管理等等。 .....
  • Xamarin入門:包括了安裝相關,環境部署,以及一些常見的問題和一些資源。
  • 在 VS2013 下開發的 MVC4 網站,基於 .net 4.5,伺服器是一臺 Windows 2008 R2,運行的時候就報錯了The'targetFramework'attributeintheelementoftheWeb.configfileisusedonlytotargetversio...
  • 突然想到有關C#中使用event特性時關於線程安全的問題,以前雖然有遵從“複製引用+null判斷”的模式(盲目地),但沒有深入瞭解和思考。為之查詢了資料和實驗,對此有了進一步的理解。一般event使用模式定義(field-like event):public event EventHandler D...
  • 生成器提供了一種更容易的方法來實現簡單的對象迭代,相比較定義類實現 Iterator 介面的方式,性能開銷和複雜性大大降低。
  • //讀取方法public static String txt2String(String path){ String fileContent = ""; try { File f = new File(path);...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...