首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python dict.items() 方法詳解:鍵值對視圖、動態性、遍歷解包與轉換為列表/集合實戰

     編輯:更多程式設計知識

dict.items() 回傳字典的鍵值對視圖 (dict_items):動態反映字典變化、支援集合運算、可直接解包遍歷。

基本用法


d = {'Name': 'Zara', 'Age': 7}
items = d.items()
print(items)           # dict_items([('Name', 'Zara'), ('Age', 7)])
print(type(items))     # 
print(list(items))     # [('Name', 'Zara'), ('Age', 7)]

核心特性:動態視圖


d = {'a': 1}
items = d.items()

print(list(items))  # [('a', 1)]

d['b'] = 2          # 修改原字典
print(list(items))  # [('a', 1), ('b', 2)]  視圖自動更新!

del d['a']
print(list(items))  # [('b', 2)]

遍歷解包 (最常用模式)


d = {'x': 10, 'y': 20, 'z': 30}

# 直接解包 (推薦)
for k, v in d.items():
    print(f'{k} = {v}')

# 僅需值
for v in d.values():
    print(v)

# 僅需鍵
for k in d.keys():
    print(k)

# 索引 + 鍵值
for i, (k, v) in enumerate(d.items()):
    print(i, k, v)

視圖的集合運算 (Py3.9+)


d1 = {'a': 1, 'b': 2, 'c': 3}
d2 = {'b': 2, 'c': 30, 'd': 4}

items1 = d1.items()
items2 = d2.items()

# 交集:鍵值對完全相同
print(items1 & items2)  # {('b', 2)}

# 差集:在 d1 但不在 d2
print(items1 - items2)  # {('a', 1), ('c', 3)}

# 對稱差集
print(items1 ^ items2)  # {('a', 1), ('c', 3), ('c', 30), ('d', 4)}

轉換為具體集合


d = {'a': 1, 'b': 2}

# 列表 (靜態快照)
lst = list(d.items())
print(lst)  # [('a', 1), ('b', 2)]

# 集合 (去重、無序)
s = set(d.items())
print(s)    # {('a', 1), ('b', 2)}

# 字典 (Py3.8+ 保留插入序)
d2 = dict(d.items())
print(d2)   # {'a': 1, 'b': 2}

items() vs 列表快照 對比

特性d.items()list(d.items())
型別dict_items (視圖)list
記憶體O(1) (無複製)O(n)
動態性即時反映字典變化靜態快照
集合運算支援 (Py3.9+)需轉 set
多次遍歷每次重新迭代可重複使用
修改字典時遍歷RuntimeError安全 (遍歷副本)

常見陷阱:迴圈中修改字典


d = {'a': 1, 'b': 2}

# 錯誤:RuntimeError: dictionary changed size during iteration
for k, v in d.items():
    if v == 1:
        del d[k]

# 正確:遍歷靜態快照
for k, v in list(d.items()):
    if v == 1:
        del d[k]

# 或收集待刪鍵
to_del = [k for k, v in d.items() if v == 1]
for k in to_del:
    del d[k]

進階:排序遍歷


d = {'z': 1, 'a': 2, 'm': 3}

# 按鍵排序
for k, v in sorted(d.items()):
    print(k, v)

# 按值排序
for k, v in sorted(d.items(), key=lambda kv: kv[1]):
    print(k, v)

# 降序
for k, v in sorted(d.items(), key=lambda kv: kv[1], reverse=True):
    print(k, v)

items() 視圖是字典遍歷的核心入口,理解其動態特性與集合運算能力,能寫出更高效、更 Pythonic 的代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved