最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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é),應(yīng)視為無序)
  • 可變性:可以動態(tài)添加、修改、刪除鍵值對
  • 鍵的唯一性:每個鍵必須是唯一的
  • 鍵的可哈希性:鍵必須是不可變類型(如字符串、數(shù)字、元組等)
  • 高效查找:基于哈希表實現(xiàn),查找時間復(fù)雜度接近 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)])  # 從鍵值對序列
# 字典推導(dǎo)式
d4 = {x: x**2 for x in range(5)}  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# fromkeys 方法 - 為多個鍵設(shè)置相同的默認(rèn)值
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'))  # 指定默認(rèn)值 '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è)置默認(rèn)值
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.字典的高級特性

默認(rèn)字典 (collections.defaultdict)

from collections import defaultdict
# 為不存在的鍵提供默認(rèn)值
word_counts = defaultdict(int)  # 默認(rèn)值為 int() 即 0
word_counts['apple'] += 1  # 自動初始化為0然后加1
# 復(fù)雜默認(rèn)值
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) 時間復(fù)雜度
  2. 內(nèi)存占用較大:比列表等結(jié)構(gòu)占用更多內(nèi)存
  3. 鍵的選擇:
    • 使用簡單、不可變對象作為鍵
    • 避免使用復(fù)雜對象作為鍵
    • 字符串是最常用的鍵類型

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)文章

  • Python3中的2to3轉(zhuǎn)換工具使用示例

    Python3中的2to3轉(zhuǎn)換工具使用示例

    這篇文章主要介紹了Python3中的2to3轉(zhuǎn)換工具使用示例,本文詳細講解了使用的步驟,并總結(jié)了一些使用注意事項,需要的朋友可以參考下
    2015-06-06
  • python中的變量命名規(guī)則詳情

    python中的變量命名規(guī)則詳情

    這篇文章主要介紹了python中的變量命名規(guī)則詳情,變量名可以包括字母、數(shù)字、下劃線,但是數(shù)字不能做為開頭,變量用的好或不好,和代碼質(zhì)量有著非常重要的聯(lián)系,合理的使用變量,可以讓你的代碼可讀性更高并且更加簡潔,下面相關(guān)內(nèi)容吧需要的小伙伴可以參考一下
    2022-03-03
  • 寫了個監(jiān)控nginx進程的Python腳本

    寫了個監(jiān)控nginx進程的Python腳本

    接上一文用iptables讓SSH服務(wù)對陌生人說不。還是有點擔(dān)心這個學(xué)期內(nèi),nginx可能會因為系統(tǒng)各種原因而出現(xiàn)異常退出,導(dǎo)致Web服務(wù)暫停。所以,又來了一個方案
    2012-05-05
  • python實現(xiàn)數(shù)字華容道

    python實現(xiàn)數(shù)字華容道

    這篇文章主要為大家詳細介紹了python實現(xiàn)數(shù)字華容道,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • python使用tomorrow實現(xiàn)多線程的例子

    python使用tomorrow實現(xiàn)多線程的例子

    今天小編就為大家分享一篇python使用tomorrow實現(xiàn)多線程的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python 數(shù)據(jù)可視化pyecharts的使用詳解

    Python 數(shù)據(jù)可視化pyecharts的使用詳解

    這篇文章主要介紹了Python 數(shù)據(jù)可視化pyecharts的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Python爬蟲 bilibili視頻彈幕提取過程詳解

    Python爬蟲 bilibili視頻彈幕提取過程詳解

    這篇文章主要介紹了Python爬蟲 bilibili視頻彈幕提取過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • widows下安裝pycurl并利用pycurl請求https地址的方法

    widows下安裝pycurl并利用pycurl請求https地址的方法

    今天小編就為大家分享一篇widows下安裝pycurl并利用pycurl請求https地址的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 探索Python列表合并技術(shù)提高代碼靈活性

    探索Python列表合并技術(shù)提高代碼靈活性

    本文將深入研究Python中列表合并的幾種方法,通過詳細的示例代碼和細致的解釋,呈現(xiàn)一場關(guān)于列表操作的精彩探險,無論是初學(xué)者還是有經(jīng)驗的開發(fā)者,通過學(xué)習(xí)本文,將更加熟練地運用這些方法,提升代碼的效率和可讀性
    2024-01-01
  • Python 利用內(nèi)置set函數(shù)對字符串和列表進行去重的方法

    Python 利用內(nèi)置set函數(shù)對字符串和列表進行去重的方法

    今天小編就為大家分享一篇Python 利用內(nèi)置set函數(shù)對字符串和列表進行去重的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論

永仁县| 永登县| 宝坻区| 廉江市| 丰都县| 平原县| 灵台县| 黄梅县| 乌恰县| 奉新县| 汽车| 望江县| 体育| 扬中市| 台山市| 崇阳县| 夏津县| 新建县| 左权县| 大厂| 潼南县| 江油市| 扎鲁特旗| 惠东县| 丰原市| 曲周县| 古交市| 安泽县| 兴和县| 喜德县| 汾西县| 柞水县| 万载县| 平遥县| 会东县| 苏尼特右旗| 新乐市| 汨罗市| 永春县| 石景山区| 酉阳|