【Python】dictionary

1 字典功能

字典是可變容器模型,且可存儲任意類型對象;
字典的每個鍵值對 <key: value> 用冒號 : 分割,每個對之間用逗號(,)分割,整個字典包括在花括號 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2, key3 : value3 }

鍵必須是唯一的,但值則不必。

值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字。

一個簡單的字典實例:person = {"name": "Alice", "age": 25, "city": "New York"}

2 創建字典

2.1 使用{ }創建字典

person = {"name": "Alice", "age": 25, "city": "New York"}

較長的字典可分行書寫

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'rust','phil': 'python',}if 'erin' not in favorite_languages.keys():print("Erin, please take our poll!")friends = ['phil', 'sarah']
for name in favorite_languages.keys():print(f"Hi {name.title()}.")if name in friends:language = favorite_languages[name].title()print(f"\t{name.title()}, I see you love {language}!")

2.2 使用 dict() 函數創建字典

person = dict(name="Bob", age=30, city="Los Angeles")

2.3 從列表的鍵值對元組創建字典

items = [("apple", 1), ("banana", 2), ("orange", 3)]
fruit_counts = dict(items)

3 訪問字典中的元素

person = {"name": "Alice", "age": 25, "city": "New York"}

訪問元素:使用方括號 [] 通過鍵訪問字典中的單個值。
只訪問鍵:使用 keys() 方法獲取所有鍵,并可以通過循環遍歷。
只訪問值:使用 values() 方法獲取所有值,并可以通過循環遍歷。
訪問鍵值對:使用 items() 方法獲取所有鍵值對,并可以通過循環遍歷每個鍵值對。

3.1 訪問字典中的鍵和值

3.1.1 訪問單個元素:[ ]

通過[ ]訪問單個鍵值對:通過指定鍵來獲取對應的值,鍵不存在時會引發錯誤或返回默認值。

person = {"name": "Alice", "age": 25, "city": "New York"}
name = person["name"]
print(name)  # 輸出:Alice

3.1.2 訪問單個元素:get()

使用 get() 方法訪問(更安全)

person = {"name": "Alice", "age": 25, "city": "New York"}
name = person.get("name")
age = person.get("age")
print(name, age)  # 輸出:Alice 25
# 如果鍵不存在,返回默認值
country = person.get("country", "Unknown")
print(country)  # 輸出:Unknown

建議優先使用 get() 方法來訪問字典中的值,以避免因鍵不存在而導致的錯誤。

3.1.2 遍歷所有元素鍵值對:逐個[ ]

alien_0 = {'color': 'green', 'speed': 'slow'}# 使用方括號訪問每個元素
print(alien_0['color'])  # 輸出:green
print(alien_0['speed'])  # 輸出:slow

3.1.2.2 遍歷所有鍵值對: for + [ ]

person = {"name": "Alice", "age": 25, "city": "New York"}# 遍歷字典的鍵,然后使用方括號訪問對應的值
for key in person:value = person[key]print(f"Key: {key}, Value: {value}")

output

Key: name, Value: Alice
Key: age, Value: 25
Key: city, Value: New York

person = {"name": "Alice", "age": 25, "city": "New York"}
for key, value in person():print()
# 輸出:
# name: Alice
# age: 25
# city: New York

3.1.2.3 遍歷所有鍵值對: items()

使用 items() 方法獲取字典中的所有元素的鍵和值,然后通過循環訪問。

person = {"name": "Alice", "age": 25, "city": "New York"}
for key, value in person.items():print(f"{key}: {value}")
# 輸出:
# name: Alice
# age: 25
# city: New York
alien_0 = {'color': 'green', 'speed': 'slow'}# 獲取字典的所有鍵值對
items = alien_0.items()
print(items)  # 輸出:dict_items([('color', 'green'), ('speed', 'slow')])# 遍歷字典的所有鍵值對
for key, value in alien_0.items():print(f"{key}: {value}")
# 輸出:
# color: green
# speed: slow

3.2 只訪問字典中的鍵

3.2.1 只訪問字典中的鍵:變量名輸出

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'rust','phil': 'python',}print("The following languages have been mentioned:")
for language in favorite_languages:print(language)

output:

jen
sarah
edward
phil

3.2.2 只訪問字典中的鍵 :keys()

alien_0 = {'color': 'green', 'speed': 'slow'}# 獲取字典的所有鍵
keys = alien_0.keys()
print(keys)  # 輸出:dict_keys(['color', 'speed'])# 遍歷字典的所有鍵
for key in alien_0:print(key)
# 輸出:
# color
# speed

3.3 只訪問字典元素的值

3.3.1 訪問單個元素值: get() 方法

get() 方法是安全訪問字典元素的推薦方式,尤其是在不確定字典中是否存在某個鍵時。如果字典中存在指定的鍵,它會返回該鍵對應的值;如果不存在,則返回一個默認值,而不是拋出錯誤。

alien_0 = {'color': 'green', 'speed': 'slow'}# 嘗試獲取鍵 'points' 對應的值
point_value = alien_0.get('points', 'No point value assigned.')
print(point_value)

對比

person = {“name”: “Alice”, “age”: 25, “city”: “New York”}
避免錯誤:使用 get() 方法可以避免因字典中沒有指定鍵而引發的 KeyError。
提供默認值:可以指定一個默認值,使代碼更具可讀性和健壯性。
[]直接訪問的區別
直接訪問:alien_0[‘points’]
如果鍵不存在,會拋出 KeyError。 get() 方法:如果鍵不存在,返回默認值(如果沒有指定默認值,則返回 None)。

3.3.2 通過方法values()所有元素的值

訪問所有值,無需for循環,可直接輸出所有值

alien_0 = {'color': 'green', 'speed': 'slow'}# 獲取字典的所有值
values = alien_0.values()
print(values)  # 輸出:dict_values(['green', 'slow'])# 遍歷字典的所有值
for value in alien_0.values():print(value)
# 輸出:
# green
# slow

3.4 排序后訪問

sorted

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'rust','phil': 'python',}for name in sorted(favorite_languages.keys()):print(f"{name.title()}, thank you for taking the poll.")

4 修改字典中的元素

person = {"name": "Alice", "age": 25, "city": "New York"}# 修改現有鍵對應的值
person["age"] = 26
print(person)  # 輸出:{'name': 'Alice', 'age': 26, 'city': 'New York'}# 添加新的鍵值對
person["country"] = "USA"
print(person)  # 輸出:{'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}

5 刪除字典中的元素

person = {"name": "Alice", "age": 25, "city": "New York"}# 使用 pop() 方法刪除指定鍵及其關聯值
age = person.pop("age")
print(age)  # 輸出:25
print(person)  # 輸出:{'name': 'Alice', 'city': 'New York'}# 使用 del 語句刪除元素
del person["city"]
print(person)  # 輸出:{'name': 'Alice'}# 清空字典
person.clear()
print(person)  # 輸出:{}

6 遍歷字典

person = {"name": "Alice", "age": 25, "city": "New York"}# 遍歷字典的鍵
for key in person:print(key)
# 輸出:
# name
# age
# city# 遍歷字典的值
for value in person.values():print(value)
# 輸出:
# Alice
# 25
# New York# 遍歷字典的鍵值對
for key, value in person.items():print(f"{key}: {value}")
# 輸出:
# name: Alice
# age: 25
# city: New York

7 檢查某個鍵或值是否在字典中

person = {"name": "Alice", "age": 25, "city": "New York"}# 檢查鍵是否存在于字典中
has_name = "name" in person
print(has_name)  # 輸出:True# 檢查值是否存在于字典中
has_alice = "Alice" in person.values()
print(has_alice)  # 輸出:True

8 字典的嵌套

# 字典中嵌套字典
students = {"Alice": {"id": 1, "grade": "A"},"Bob": {"id": 2, "grade": "B"},"Charlie": {"id": 3, "grade": "C"}
}# 訪問嵌套字典中的元素
alice_grade = students["Alice"]["grade"]
print(alice_grade)  # 輸出:"A"# 修改嵌套字典中的元素
students["Bob"]["grade"] = "A"
print(students["Bob"])  # 輸出:{'id': 2, 'grade': 'A'}

8.1 字典的嵌套定義

users = {'aeinstein': {'first': 'albert','last': 'einstein','location': 'princeton',},'mcurie': {'first': 'marie','last': 'curie','location': 'paris',},}for username, user_info in users.items():print(f"\nUsername: {username}")full_name = f"{user_info['first']} {user_info['last']}"location = user_info['location']print(f"\tFull name: {full_name.title()}")print(f"\tLocation: {location.title()}")

8.2 在字典中嵌套列表

pizza = {'crust': 'thick','toppings': ['mushrooms', 'extra cheese'],}# Summarize the order.
print(f"You ordered a {pizza['crust']}-crust pizza ""with the following toppings:")for topping in pizza['toppings']:print(f"\t{topping}")

8.3 將字典嵌套入列表

8.3.1 通過逐個定義將字典嵌套入列表

alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}aliens = [alien_0, alien_1, alien_2]for alien in aliens:print(alien)

8.3.2 通過循環將字典嵌套入列表

# Make an empty list for storing aliens.
aliens = []# Make 30 green aliens.
for alien_number in range(30):new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}aliens.append(new_alien)# Show the first 5 aliens.
for alien in aliens[:5]:print(alien)
print("...")# Show how many aliens have been created.
print(f"Total number of aliens: {len(aliens)}")

output

{‘color’: ‘yellow’, ‘points’: 10, ‘speed’: ‘medium’}
{‘color’: ‘yellow’, ‘points’: 10, ‘speed’: ‘medium’}
{‘color’: ‘yellow’, ‘points’: 10, ‘speed’: ‘medium’}
{‘color’: ‘green’, ‘points’: 5, ‘speed’: ‘slow’}
{‘color’: ‘green’, ‘points’: 5, ‘speed’: ‘slow’}

Total number of aliens: 30

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

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

相關文章

【python】If 語句

1 使用if 進行條件判斷 1.1 檢查字符串是否相等 car bmw car BMW # FALSEcar bmw car.upper() BMW # true # 變小寫用方法&#xff1a;lower1.2 檢查字符串是否不相等 my_car yadeaif my_car ! Audi:print("Buy one! Buy one! Buy one!")1.3 比較數字 answe…

Knife4j 使用詳解

一、概述 Knife4j 是一款基于 Swagger 的開源 API 文檔工具&#xff0c;旨在為 Java 開發者提供更美觀、功能更強大的 API 文檔生成、展示和調試體驗。它是 Swagger-Bootstrap-UI 的升級版&#xff0c;通過增強 UI 界面和擴展功能&#xff0c;解決了原生 Swagger UI 界面簡陋、…

Java excel坐標計算

package com.common.base.util.excel;/*** excel 坐標計算*/ public class UtilExcelPosi {/*** deepseek生成 ExcelProperty(index UtilExcelPosi.pA)*/public final static int pA 0;public final static int pB 1;public final static int pC 2;public final static i…

【JavaWeb】Servlet+JSP 實現分頁功能

文章目錄 思路數據抽出功能設計 功能模塊工具類前端內容用戶端數據處理 思路 數據抽出 需要顯示的數據&#xff0c;查詢的數據抽出&#xff1b;進行分頁顯示&#xff0c;需要統計抽出的件數&#xff0c;然后根據頁面顯示尺寸調整顯示頁面內容&#xff1b; 功能設計 翻頁需要…

SpringBoot-準備工作-工程搭建

目錄 1.創建空項目 2.檢查項目jdk版本 3.檢查Maven的全局配置 4.配置項目的字符集 5.創建SpringBoot工程 1.創建空項目 2.檢查項目jdk版本 3.檢查Maven的全局配置 4.配置項目的字符集 5.創建SpringBoot工程

01、python實現matlab的插值算法,以及驗證

import numpy as np from scipy.interpolate import griddata import sys def griddata_wrapper(x, y, v, xq, yq, method): """ 包裝scipy的griddata函數,支持單個點或多個點的插值 """ try: # 將輸入轉換為numpy數組…

React ahooks——useRequest

目錄 簡介 1. 核心功能 2. 基本用法 3. 高級用法 &#xff08;1&#xff09;輪詢請求&#xff08;Polling&#xff09; &#xff08;2&#xff09;防抖&#xff08;Debounce&#xff09; &#xff08;3&#xff09;依賴刷新&#xff08;refreshDeps&#xff09; &#x…

re正則、Xpath、BeautifulSouplxml 區別

目錄 1. re 正則表達式2. XPath3. BeautifulSoup + lxml4. 功能特性對比5.對比與建議在網頁數據解析中,正則表達式(re)XPath(常結合lxml)BeautifulSoup(常依賴解析器如lxml)是三種主流技術,各有核心差異和適用場景。 1. re 正則表達式 優勢:文本匹配效率高,尤其適用于…

教師辦工專用 資源包|課件+手抄報+PPT模板+常用表格 PDF格式93GB

如果家里親戚或朋友有走上教育之路的人&#xff0c;給他這份整合可以減輕不少工作負擔&#xff0c;更快地適應教育的節奏。也可以發給孩子的老師讓他在平時做個班級活動的參考 《老師教學辦工資源包》包括手抄報大全、教學計劃、工作總結、培訓手冊、課程表等教學、辦公常用資…

算法第37天| 完全背包\518. 零錢兌換 II\377. 組合總和 Ⅳ\57. 爬樓梯

完全背包 完全背包和01背包的區別 純完全背包&#xff0c;遍歷背包和物品的順序是可以對調的&#xff0c;只要求得出最大價值&#xff0c;不要求湊成總和的元素的順序&#xff1b; 01背包&#xff0c;遍歷背包和物品的順序是不可以對調的&#xff08;一維不行&#xff0c;二維…

七彩喜智慧康養平臺:重構銀發生活的數字守護網

隨著社會老齡化程度的不斷加深&#xff0c;如何讓老年人安享幸福晚年成為社會關注的焦點。 在這一背景下&#xff0c;七彩喜智慧康養平臺應運而生&#xff0c;以創新的科技手段和貼心的服務理念&#xff0c;為老年人的生活帶來了諸多好處&#xff0c;發揮著重要作用&#xff0…

【設計模式】用觀察者模式對比事件訂閱(相機舉例)

&#x1f4f7; 用觀察者模式對比事件訂閱(相機舉例) 標簽&#xff1a;WPF、C#、Halcon、設計模式、觀察者模式、事件機制 在日常開發中&#xff0c;我們經常使用 事件機制&#xff08;Event&#xff09; 來訂閱圖像采集信號。然而當系統日益復雜&#xff0c;多個模塊同時需要響…

【數據分析九:Association Rule】關聯分析

一、數據挖掘定義 數據挖掘&#xff1a; 從大量的數據中挖掘那些令人感興趣的、有用的、隱含的、先前未知的 和可能有用的 模式或知識 &#xff0c;并據此更好的服務人們的生活。 二、四類任務 數據分析有哪些任務&#xff1f; 今天我們來講述其中的關聯分析 三、關聯分析 典…

AWS Security Hub郵件告警設置

問題 需要給AWS Security Hub設置郵件告警。 前提 已經啟用AWS Security Hub。 AWS SNS 創建一個AWS Security Hub告警主題SecurityHub-Topic&#xff0c;如下圖&#xff1a; 創建完成后&#xff0c;訂閱該主題。 AWS EventBridge 設置規則名SecurityHubFindings-Rules…

(OSGB轉3DTiles強大工具)ModelSer--強大的實景三維數據分布式管理平臺

1. ModelSer 能幫我們做什么 1.1 最快速的 osgb 發布 3dtiles 服務 測試的速度大于 10G/分鐘&#xff0c;且速度基本是線性的&#xff08;100G10分鐘&#xff0c;1T100分鐘&#xff09;。支持城市級傾斜數據半天內完成服務發布&#xff0c;并支持數據的單塊更新。 1.2 支持所見…

《HTTP權威指南》 第5-6章 Web服務器和代理

基本Web服務器請求的步驟 1、建立連接 接受一個客戶端連接&#xff0c;或者如果不希望與這個客戶端建立連接&#xff0c;就將其關閉。 處理新連接客戶端主機名識別&#xff1a;反向DNS查找&#xff0c;將IP地址轉換為客戶端主機名過ident確定客戶端用戶&#xff1a;客戶端支持…

微信二次開發,對接智能客服邏輯

接口友情鏈接&#xff0c;點擊即可訪問。 ## 設備創建與復用機制 首次調用/login/getLoginQrCode需傳空appId觸發設備創建&#xff0c;響應返回固定設備ID。后續登錄必須復用此ID以避免風控&#xff08;同一微信號綁定固定設備&#xff09;。設備類型可選ipad/mac&#xff0c;當…

網站并發訪問量達到1萬以上需要注意哪些事項

當網站并發訪問量達到1萬以上時&#xff0c;需要注意以下幾個方面?&#xff1a; ?服務器硬件配置?&#xff1a; ?處理器&#xff08;CPU&#xff09;?&#xff1a;選擇多核、高頻率的CPU&#xff0c;以確保服務器能夠高效地處理大量的請求。?內存&#xff08;RAM&#xf…

二、OpenCV的第一個程序

文章目錄 一、第一個程序&#xff1a;顯示圖片1.1 cv::imread1.2 cv::namedWindow1.3 cv::imshow 二、第二個程序&#xff1a;視頻2.1 cv::VideoCapture 三、加入了滑動條的基本瀏覽窗口 一、第一個程序&#xff1a;顯示圖片 示例&#xff1a;一個簡單的加載并顯示圖像的OpenC…

第14次:商品列表、熱銷商品及詳情

第1步&#xff1a;定義獲取商品列表的視圖類ListView&#xff0c;本視圖中完成了如下功能&#xff1a; 根據商品類別id獲取商品類別信息&#xff0c;并根據類別信息反向查詢到所有的該類別的商品。根據頁號和排序方式兩個參數&#xff0c;獲取某個頁面的商品列表信息。 #good…