Python 學習中什么是字典,如何操作字典?

什么是字典

字典(Dictionary)是Python中的一種內置數據結構,用于存儲鍵值對(key-value pair)。字典的特點是通過鍵來快速查找值,鍵必須是唯一的,而值可以是任何數據類型。字典在其他編程語言中通常被稱為哈希表或關聯數組。

字典使用花括號 {} 括起來,鍵值對之間用逗號 , 分隔,每個鍵和值之間用冒號 : 分隔。例如:

my_dict = {'name': 'John','age': 25,'city': 'New York'
}

創建字典

創建字典的方法有多種,可以使用花括號 {}dict() 函數。

使用花括號創建字典
# 創建一個空字典
empty_dict = {}# 創建一個帶有初始鍵值對的字典
person = {'name': 'Alice','age': 30,'city': 'Seattle'
}
使用 dict() 函數創建字典
# 創建一個空字典
empty_dict = dict()# 使用關鍵字參數創建字典
person = dict(name='Bob', age=25, city='San Francisco')# 從鍵值對的列表創建字典
person = dict([('name', 'Carol'), ('age', 22), ('city', 'Chicago')])

訪問字典元素

可以通過鍵來訪問字典中的值。如果鍵不存在,會引發 KeyError

person = {'name': 'David','age': 28,'city': 'Los Angeles'
}# 通過鍵訪問值
print(person['name'])  # 輸出 'David'# 使用 get() 方法訪問值,若鍵不存在則返回 None 或指定的默認值
print(person.get('age'))  # 輸出 28
print(person.get('gender'))  # 輸出 None
print(person.get('gender', 'Unknown'))  # 輸出 'Unknown'

修改字典元素

可以通過鍵修改字典中的值,如果鍵不存在,則會添加新的鍵值對。

person = {'name': 'Eve','age': 35,'city': 'Boston'
}# 修改已有鍵的值
person['age'] = 36
print(person)  # 輸出 {'name': 'Eve', 'age': 36, 'city': 'Boston'}# 添加新的鍵值對
person['gender'] = 'Female'
print(person)  # 輸出 {'name': 'Eve', 'age': 36, 'city': 'Boston', 'gender': 'Female'}

刪除字典元素

可以使用 del 語句或 pop() 方法刪除字典中的鍵值對。

person = {'name': 'Frank','age': 40,'city': 'Denver'
}# 使用 del 刪除鍵值對
del person['city']
print(person)  # 輸出 {'name': 'Frank', 'age': 40}# 使用 pop() 方法刪除鍵值對并返回被刪除的值
age = person.pop('age')
print(age)  # 輸出 40
print(person)  # 輸出 {'name': 'Frank'}

字典的常用操作

獲取字典的鍵、值和鍵值對

可以使用 keys()values()items() 方法分別獲取字典的鍵、值和鍵值對。

person = {'name': 'Grace','age': 29,'city': 'Houston'
}# 獲取所有鍵
keys = person.keys()
print(keys)  # 輸出 dict_keys(['name', 'age', 'city'])# 獲取所有值
values = person.values()
print(values)  # 輸出 dict_values(['Grace', 29, 'Houston'])# 獲取所有鍵值對
items = person.items()
print(items)  # 輸出 dict_items([('name', 'Grace'), ('age', 29), ('city', 'Houston')])
遍歷字典

可以使用 for 循環遍歷字典的鍵、值或鍵值對。

person = {'name': 'Hank','age': 45,'city': 'Miami'
}# 遍歷字典的鍵
for key in person:print(key, person[key])# 遍歷字典的鍵和值
for key, value in person.items():print(key, value)
合并字典

可以使用 update() 方法將一個字典的鍵值對更新到另一個字典中。如果鍵已存在,則更新其值;如果鍵不存在,則添加新的鍵值對。

dict1 = {'name': 'Ivy', 'age': 32}
dict2 = {'city': 'Atlanta', 'age': 33}# 使用 update() 方法合并字典
dict1.update(dict2)
print(dict1)  # 輸出 {'name': 'Ivy', 'age': 33, 'city': 'Atlanta'}

字典的高級操作

字典推導式

字典推導式是一種簡潔的創建字典的方法,類似于列表推導式。語法為 {key: value for item in iterable}

# 創建一個平方字典
squares = {x: x**2 for x in range(6)}
print(squares)  # 輸出 {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}# 過濾字典中的元素
person = {'name': 'Jack', 'age': 50, 'city': 'Seattle', 'country': 'USA'}
filtered_dict = {k: v for k, v in person.items() if k != 'age'}
print(filtered_dict)  # 輸出 {'name': 'Jack', 'city': 'Seattle', 'country': 'USA'}
嵌套字典

字典可以包含其他字典作為其值,這使得字典可以用于表示更復雜的數據結構。

# 嵌套字典示例
students = {'John': {'age': 20, 'major': 'Computer Science'},'Alice': {'age': 22, 'major': 'Mathematics'},'Bob': {'age': 21, 'major': 'Physics'}
}# 訪問嵌套字典中的元素
print(students['Alice']['major'])  # 輸出 'Mathematics'# 添加新的嵌套字典
students['Eve'] = {'age': 23, 'major': 'Biology'}
print(students)

字典的實際應用

統計字符出現次數

字典可以用于統計字符串中每個字符出現的次數。

text = "hello world"# 統計字符出現次數
char_count = {}
for char in text:if char in char_count:char_count[char] += 1else:char_count[char] = 1print(char_count)  # 輸出 {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}
存儲和查詢配置參數

字典可以用于存儲和查詢應用程序的配置參數。

# 配置參數字典
config = {'host': 'localhost','port': 8080,'debug': True
}# 訪問配置參數
print(config['host'])  # 輸出 'localhost'
print(config['port'])  # 輸出 8080# 修改配置參數
config['debug'] = False
print(config)  # 輸出 {'host': 'localhost', 'port': 8080, 'debug': False}
將字典轉換為JSON

在處理API請求或響應時,通常需要將字典轉換為JSON格式,可以使用 json 模塊實現。

import json# 字典
person = {'name': 'Kate','age': 27,'city': 'San Diego'
}# 將字典轉換為JSON字符串
person_json = json.dumps(person)
print(person_json)  # 輸出 '{"name": "Kate", "age": 27, "city": "San Diego"}'# 將JSON字符串轉換為字典
person_dict = json.loads(person_json)
print(person_dict)  # 輸出 {'name': 'Kate', 'age': 27, 'city': 'San Diego'}

字典的注意事項

  1. 鍵必須是可哈希的:字典的鍵必須是不可變類型,如字符串、數字、元組等。列表、字典等可變類型不能作為字典的鍵。
  2. 字典是無序的:在Python 3.7之前,字典是無序的。從Python 3.7開始,字典的插入順序被保留,但不應依賴于此特性。
  3. 字典的性能:字典的查找、插入和刪除操作在平均情況下都是O(1)時間復雜度,但最壞情況下可能會退化為O(n)。

字典是Python中強大且靈活的數據結構,適用于需要快速查找、插入和刪除操作的場景。通過對字典的創建、訪問、修改、刪除等基本操作的理解,以及高級操作如字典推導式和嵌套字典的應用,可以更好地利用字典處理復雜的數據結構和實現高效的算法。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40894.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40894.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40894.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue實現搜索文章關鍵字,滑到指定位置并且高亮

1、輸入搜索條件&#xff0c;點擊搜索按鈕 2、滑到定位到指定的搜索條件。 <template><div><div class"search_form"><el-inputv-model"searchVal"placeholder"請輸入關鍵字查詢"clearablesize"small"style&quo…

HashMap的底層實現原理詳解

HashMap是Java中最常用的集合類之一&#xff0c;其基于哈希表的Map接口實現&#xff0c;提供了快速的鍵值對存儲和檢索功能。深入理解HashMap的底層實現原理&#xff0c;對于提升編程技能、應對技術面試以及優化程序性能都具有重要意義。以下從技術難點、面試官關注點、回答吸引…

數據庫作業day3

創建一個student表用于存儲學生信息 CREATE TABLE student( id INT PRIMARY KEY, name VARCHAR(20) NOT NULL, grade FLOAT ); 向student表中添加一條新記錄 記錄中id字段的值為1&#xff0c;name字段的值為"monkey"&#xff0c;grade字段的值為98.5 insert into …

對于老百姓而言VR到底能做什么?

VR技術自誕生以來不斷發展&#xff0c;已經廣泛應用于教育、醫療、工程、軍事、航空、航海、影視、娛樂等方面&#xff0c;譬如&#xff0c;大型工程或軍事活動VR預演可以大幅度減少人力物力投入&#xff1b;在航空領域&#xff0c;航天飛行員在訓練艙中面對屏幕進行各種駕駛操…

mysql修改密碼失敗報錯無法登錄解決辦法

mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user root@localhost (using password: YES) 這個問題是因為在嘗試使用命令行連接MySQL時,使用了明文密碼,這是不安全的。同時,由于某種原因,您…

Kylin中的查詢引擎:大數據查詢加速的引擎解析

Kylin中的查詢引擎&#xff1a;大數據查詢加速的引擎解析 Apache Kylin是一個開源的分布式分析引擎&#xff0c;專為大規模數據集提供快速的SQL查詢和多維分析&#xff08;OLAP&#xff09;能力。在Kylin的架構中&#xff0c;查詢引擎&#xff08;Query Engine&#xff09;扮演…

【Linux進階】文件系統4——文件系統特性

1.磁盤組成與分區的復習 首先說明一下磁盤的物理組成&#xff0c;整塊磁盤的組成主要有&#xff1a; 圓形的碟片&#xff08;主要記錄數據的部分&#xff09;&#xff1b;機械手臂&#xff0c;與在機械手臂上的磁頭&#xff08;可擦寫碟片上的數據);主軸馬達&#xff0c;可以…

打開瀏覽器控制臺,點擊應用,瀏覽器崩潰

調試的時候&#xff0c;打開控制臺&#xff0c;點擊 “應用” 立馬瀏覽器奔潰&#xff0c;但是點擊別的沒問題 調查發現是因為manifest.json這個文件引起的 manifest.json 最主要的原因是因為沒有設置這個sizes字段 Google瀏覽器更新大概到126之后的版本會有問題&#xff0c;之…

AI多模態教程:Qwen-VL多模態大模型實踐指南

一、模型介紹 Qwen-VL&#xff0c;由阿里云研發的大規模視覺語言模型&#xff08;Large Vision Language Model, LVLM&#xff09;&#xff0c;代表了人工智能領域的一個重大突破。該模型具有處理和關聯圖像、文本、檢測框等多種類型數據的能力&#xff0c;其輸出形式同樣多樣…

代碼隨想錄Day69(圖論Part05)

并查集 // 1.初始化 int fa[MAXN]; void init(int n) {for (int i1;i<n;i)fa[i]i; }// 2.查詢 找到的祖先直接返回&#xff0c;未進行路徑壓縮 int.find(int i){if(fa[i] i)return i;// 遞歸出口&#xff0c;當到達了祖先位置&#xff0c;就返回祖先elsereturn find(fa[i])…

py基礎語法簡述

py基礎&#xff0c;常用sdk 一些要點 python中是沒有常量的關鍵字的&#xff0c;只是我們常常約定使用大寫字符組合的變量名表示常量&#xff0c;也有“不要對其進行賦值”的提醒操作 PI 3.14python3中有六個標準的數據類型&#xff1a; Number(數字)、String(字符串)、Boo…

基于Python爬蟲的城市二手房數據分析可視化

基于Python爬蟲的城市二手房數據分析可視化 一、前言二、數據采集(爬蟲,附完整代碼)三、數據可視化(附完整代碼)3.1 房源面積-總價散點圖3.2 各行政區均價3.3 均價最高的10個小區3.4 均價最高的10個地段3.5 戶型分布3.6 詞云圖四、如何更換城市一、前言 二手房具有價格普…

CSS position屬性之relative和absolute

目錄 1 參考文章2 五個屬性值3 position:static4 position:relative&#xff08;相對&#xff09;5 position:absolute&#xff08;絕對&#xff09; 1 參考文章 https://blog.csdn.net/lalala_dxf/article/details/123566909 https://blog.csdn.net/WangMinGirl/article/deta…

最靈活且易用的C++開源串口通信調試軟件

這款C開源串口調試軟件&#xff0c;集成了豐富的功能&#xff0c;為用戶提供高效、便捷的串口通信調試體驗。以下是其核心功能亮點&#xff1a; 基礎功能&#xff1a; 數據交互自如&#xff1a;支持串口數據的輕松讀取與發送&#xff0c;讓數據交換變得簡單直接。 靈活配置參…

基于順序表的通訊錄實現

一、前言 基于已經學過的順序表&#xff0c;可以實現一個簡單的通訊錄。 二、通訊錄相關頭文件 //Contact.h #pragma once#define NAME_MAX 20 #define TEL_MAX 20 #define ADDR_MAX 20 #define GENDER_MAX 20typedef struct PersonInfo {char name[NAME_MAX];char gender[G…

Python的招聘數據分析與可視化管理系統-計算機畢業設計源碼55218

摘要 隨著互聯網的迅速發展&#xff0c;招聘數據在規模和復雜性上呈現爆炸式增長&#xff0c;對數據的深入分析和有效可視化成為招聘決策和招聘管理的重要手段。本論文旨在構建一個基于Python的招聘數據分析與可視化管理系統。 該平臺以主流招聘平臺為數據源&#xff0c;利用Py…

MSPM0G3507——解決printf重定向在其他位置不能用的問題(printf重定向的補充)

除了之前發的文章的printf重定向的代碼之外&#xff0c;還要加上這樣一段代碼即可 int puts(const char *_ptr) {int count fputs(_ptr,stdout);count fputs("\n",stdout);return count;} 完整的重定向&#xff1a; int fputc(int c, FILE* stream) {DL_UART_Main_…

昇思25天學習打卡營第2天|MindSpore快速入門

打卡 目錄 打卡 快速入門案例&#xff1a;minist圖像數據識別任務 案例任務說明 流程 1 加載并處理數據集 2 模型網絡構建與定義 3 模型約束定義 4 模型訓練 5 模型保存 6 模型推理 相關參考文檔入門理解 MindSpore數據處理引擎 模型網絡參數初始化 模型優化器 …

一個字符串的全部子序列和全排列

在計算機科學中&#xff0c;字符串的子序列和全排列是兩個重要的概念。 1. 子序列 子序列是從一個序列中刪除一些&#xff08;或不刪除&#xff09;元素而不改變剩余元素的順序形成的新序列。 例如&#xff0c;字符串 “abc” 的子序列包括&#xff1a; “”&#xff08;空…

如何選擇TikTok菲律賓直播網絡?

為了滿足用戶對于實時互動的需求&#xff0c;TikTok推出了直播功能&#xff0c;讓用戶能夠與粉絲即時交流。本文將探討如何選擇適合的TikTok菲律賓直播網絡&#xff0c;并分析OgLive是否是值得信賴的選擇。 TikTok菲律賓直播網絡面臨的挑戰 作為全球領先的短視頻平臺&#xff…