欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 字典 (Dictionary)使用詳解

 更新時間:2025年07月16日 14:42:49   作者:寫點自己想寫的  
字典是python中最重要,最常用的數(shù)據(jù)結(jié)構(gòu)之一,它提供了高效的鍵值對存儲和查找能力,這篇文章主要介紹了Python字典 (Dictionary) 詳解,需要的朋友可以參考下

字典

字典是python中最重要,最常用的數(shù)據(jù)結(jié)構(gòu)之一,它提供了高效的鍵值對存儲和查找能力。

1.基本特性

  • 鍵值對集合:存儲數(shù)據(jù)形式為 key: value 對
  • 無序性:Python 3.7+ 開始保持插入順序(實現(xiàn)細節(jié),應視為無序)
  • 可變性:可以動態(tài)添加、修改、刪除鍵值對
  • 鍵的唯一性:每個鍵必須是唯一的
  • 鍵的可哈希性:鍵必須是不可變類型(如字符串、數(shù)字、元組等)
  • 高效查找:基于哈希表實現(xiàn),查找時間復雜度接近 O(1)

2.創(chuàng)建字典

# 使用花括號(最常用)
d1 = {'name': 'Alice', 'age': 25}
# 使用 dict() 構(gòu)造函數(shù)
d2 = dict(name='Bob', age=30)  # 鍵作為關(guān)鍵字參數(shù)
d3 = dict([('name', 'Charlie'), ('age', 35)])  # 從鍵值對序列
# 字典推導式
d4 = {x: x**2 for x in range(5)}  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# fromkeys 方法 - 為多個鍵設(shè)置相同的默認值
keys = ['a', 'b', 'c']
d5 = dict.fromkeys(keys, 0)  # {'a': 0, 'b': 0, 'c': 0}
# 空字典
empty_dict = {}
empty_dict2 = dict()

3.訪問元素

person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 通過鍵訪問
print(person['name'])  # 'Alice'
# 使用 get() 方法(避免KeyError)
print(person.get('age'))      # 25
print(person.get('country'))  # None
print(person.get('country', 'USA'))  # 指定默認值 'USA'
# 檢查鍵是否存在
print('name' in person)     # True
print('country' in person)  # False
# 獲取所有鍵、值、鍵值對
print(person.keys())    # dict_keys(['name', 'age', 'city'])
print(person.values())  # dict_values(['Alice', 25, 'New York'])
print(person.items())   # dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])

4.修改字典

person = {'name': 'Alice', 'age': 25}
# 添加/修改元素
person['city'] = 'New York'  # 添加
person['age'] = 26           # 修改
# update() 方法 - 批量更新
person.update({'age': 27, 'country': 'USA'})
# setdefault() - 如果鍵不存在則設(shè)置默認值
person.setdefault('gender', 'female')  # 返回 'female'
person.setdefault('name', 'Bob')      # 不修改,返回 'Alice'
# 合并字典 (Python 3.9+)
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
merged = dict1 | dict2  # {'a': 1, 'b': 3, 'c': 4}

5.刪除元素

person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# del 語句
del person['age']
# pop() - 刪除并返回指定鍵的值
city = person.pop('city')  # 返回 'New York'
# popitem() - 刪除并返回最后插入的鍵值對 (Python 3.7+)
key, value = person.popitem()  # 可能是任意項(Python 3.7前)
# clear() - 清空字典
person.clear()  # {}
# 注意:刪除不存在的鍵會引發(fā) KeyError

6.字典遍歷

scores = {'Alice': 85, 'Bob': 92, 'Charlie': 78}
# 遍歷鍵
for name in scores:
    print(name)
for name in scores.keys():
    print(name)
# 遍歷值
for score in scores.values():
    print(score)
# 遍歷鍵值對
for name, score in scores.items():
    print(f"{name}: {score}")
# 帶索引的遍歷 (Python 3.7+ 保持插入順序)
for i, (name, score) in enumerate(scores.items()):
    print(f"{i+1}. {name}: {score}")

7.字典的高級特性

默認字典 (collections.defaultdict)

from collections import defaultdict
# 為不存在的鍵提供默認值
word_counts = defaultdict(int)  # 默認值為 int() 即 0
word_counts['apple'] += 1  # 自動初始化為0然后加1
# 復雜默認值
grouped_data = defaultdict(list)
grouped_data['fruits'].append('apple')

有序字典

from collections import OrderedDict
# 保持元素插入順序(Python 3.7+ 普通字典也保持順序)
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3

計數(shù)器

from collections import Counter
# 統(tǒng)計元素出現(xiàn)次數(shù)
words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
word_counts = Counter(words)
print(word_counts.most_common(2))  # [('apple', 3), ('banana', 2)]

8.字典的視圖對象

字典的keys(),values(),items()返回的是視圖對象:

d = {'a': 1, 'b': 2}
keys = d.keys()
# 視圖是動態(tài)的
d['c'] = 3
print(keys)  # dict_keys(['a', 'b', 'c'])
# 支持集合操作
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
print(d1.keys() & d2.keys())  # {'b'}
print(d1.keys() - d2.keys())  # {'a'}

9.字典與JSON

import json
# 字典轉(zhuǎn)JSON
person = {'name': 'Alice', 'age': 25}
json_str = json.dumps(person)  # '{"name": "Alice", "age": 25}'
# JSON轉(zhuǎn)字典
person_dict = json.loads(json_str)

10.性能考慮

  1. 查找速度快:接近 O(1) 時間復雜度
  2. 內(nèi)存占用較大:比列表等結(jié)構(gòu)占用更多內(nèi)存
  3. 鍵的選擇:
    • 使用簡單、不可變對象作為鍵
    • 避免使用復雜對象作為鍵
    • 字符串是最常用的鍵類型

11.適用場景

  1. 存儲對象屬性或配置信息
  2. 快速查找表
  3. 實現(xiàn)稀疏數(shù)據(jù)結(jié)構(gòu)
  4. 緩存計算結(jié)果(Memoization)
  5. 數(shù)據(jù)分組和聚合
  6. JSON數(shù)據(jù)交互

小結(jié)

  1. 字典鍵必須是可哈希的(不可變類型)
    • 允許:字符串、數(shù)字、元組(僅包含可哈希元素)
    • 不允許:列表、字典、集合等可變類型
  2. 比較操作:
    • == 比較鍵值對內(nèi)容
    • != 判斷是否不相等
    • 沒有 <, > 等比較操作
  3. 字典在Python 3.6及之前是無序的,3.7+開始保持插入順序(作為實現(xiàn)細節(jié),3.7正式成為語言特性)

字典是Python中最靈活和強大的數(shù)據(jù)結(jié)構(gòu)之一,熟練掌握字典的使用可以極大提高Python編程效率和代碼質(zhì)量。

到此這篇關(guān)于Python 字典 (Dictionary) 詳解的文章就介紹到這了,更多相關(guān)Python 字典 Dictionary內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決python使用list()時總是報錯的問題

    解決python使用list()時總是報錯的問題

    這篇文章主要介紹了解決python使用list()時總是報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python中hash()函數(shù)之哈希值的奧秘詳解

    Python中hash()函數(shù)之哈希值的奧秘詳解

    hash()是Python 中的一個內(nèi)置函數(shù),用于計算對象的哈希值,哈希值是一個整數(shù),用于唯一標識對象,下面這篇文章主要給大家介紹了關(guān)于Python中hash()函數(shù)之哈希值奧秘的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • python實現(xiàn)井字棋游戲

    python實現(xiàn)井字棋游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)井字棋游戲的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • python代碼打包超詳細教程

    python代碼打包超詳細教程

    在Python開發(fā)的過程中我們經(jīng)常會需要將自己的代碼打包成一個可執(zhí)行文件,方便將代碼分享給其他人使用,下面這篇文章主要給大家介紹了關(guān)于python代碼打包的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Python 轉(zhuǎn)換時間戳為指定格式日期

    Python 轉(zhuǎn)換時間戳為指定格式日期

    這篇文章主要為大家介紹了Python轉(zhuǎn)換時間戳,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python機器學習庫scikit-learn使用詳解

    Python機器學習庫scikit-learn使用詳解

    scikit-learn是Python中最流行的機器學習庫之一,它提供了各種各樣的機器學習算法和工具,包括分類、回歸、聚類、降維等
    2023-03-03
  • 解決安裝tensorflow遇到無法卸載numpy 1.8.0rc1的問題

    解決安裝tensorflow遇到無法卸載numpy 1.8.0rc1的問題

    今天小編就為大家分享一篇解決安裝tensorflow遇到無法卸載numpy 1.8.0rc1的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 深入淺析python的第三方庫pandas

    深入淺析python的第三方庫pandas

    這篇文章主要介紹了python的第三方庫pandas的相關(guān)知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Python日志庫 Logoru介紹

    Python日志庫 Logoru介紹

    Loguru是一個高效且易用的Python日志庫,相較于傳統(tǒng)的logging模塊,它提供了簡潔的API、自動化的日志處理、多線程安全等特點,Loguru支持日志級別管理、異常捕獲、日志文件輪轉(zhuǎn)與壓縮、上下文信息添加等高級功能,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Python實現(xiàn)pdf電子發(fā)票信息提取到excel表格

    Python實現(xiàn)pdf電子發(fā)票信息提取到excel表格

    這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)pdf電子發(fā)票信息提取并保存到excel表格,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-05-05

最新評論