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

Python 字典 (Dictionary)使用詳解

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

字典

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

1.基本特性

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

2.創(chuàng)建字典

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

3.訪問(wèn)元素

person = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 通過(guò)鍵訪問(wèn)
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
# 獲取所有鍵、值、鍵值對(duì)
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 語(yǔ)句
del person['age']
# pop() - 刪除并返回指定鍵的值
city = person.pop('city')  # 返回 'New York'
# popitem() - 刪除并返回最后插入的鍵值對(duì) (Python 3.7+)
key, value = person.popitem()  # 可能是任意項(xiàng)(Python 3.7前)
# clear() - 清空字典
person.clear()  # {}
# 注意:刪除不存在的鍵會(huì)引發(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)
# 遍歷鍵值對(duì)
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.字典的高級(jí)特性

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

from collections import defaultdict
# 為不存在的鍵提供默認(rèn)值
word_counts = defaultdict(int)  # 默認(rèn)值為 int() 即 0
word_counts['apple'] += 1  # 自動(dòng)初始化為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

計(jì)數(shù)器

from collections import Counter
# 統(tǒng)計(jì)元素出現(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.字典的視圖對(duì)象

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

d = {'a': 1, 'b': 2}
keys = d.keys()
# 視圖是動(dòng)態(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) 時(shí)間復(fù)雜度
  2. 內(nèi)存占用較大:比列表等結(jié)構(gòu)占用更多內(nèi)存
  3. 鍵的選擇:
    • 使用簡(jiǎn)單、不可變對(duì)象作為鍵
    • 避免使用復(fù)雜對(duì)象作為鍵
    • 字符串是最常用的鍵類(lèi)型

11.適用場(chǎng)景

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

小結(jié)

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

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

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

相關(guān)文章

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

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

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

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

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

    寫(xiě)了個(gè)監(jiān)控nginx進(jìn)程的Python腳本

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

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

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

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

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

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

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

    Python爬蟲(chóng) bilibili視頻彈幕提取過(guò)程詳解

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

    widows下安裝pycurl并利用pycurl請(qǐng)求https地址的方法

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

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

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

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

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

最新評(píng)論

泉州市| 古蔺县| 康平县| 曲阜市| 息烽县| 乡城县| 罗甸县| 华阴市| 葵青区| 西乌| 紫阳县| 宽甸| 甘洛县| 林州市| 宁都县| 三都| 望谟县| 桂阳县| 准格尔旗| 乾安县| 安新县| 德钦县| 响水县| 加查县| 垦利县| 灵石县| 东莞市| 普陀区| 甘谷县| 梨树县| 区。| 宁国市| 富平县| 扎鲁特旗| 剑阁县| 且末县| 梨树县| 漯河市| 澄江县| 油尖旺区| 庆安县|