Python 3 字典代码实例 字典基础Python 中的字典是一种可变的、无序的Python 3.7 起保持插入顺序键值对集合。字典的声明和初始化可以通过以下方式实现# 使用花括号创建dict1{name:Alice,age:25}# 使用 dict() 构造函数dict2dict(nameBob,age30)# 创建空字典dict3{}# 从键值对序列创建dict4dict([(city,Beijing),(country,China)])字典访问与修改使用键可以方便地访问和修改字典中的值person{name:Charlie,age:28,city:Shanghai}# 访问值print(person[name])# Charlieprint(person.get(age))# 28print(person.get(salary,0))# 0键不存在时返回默认值# 修改值person[age]29# 添加新键值对person[job]Engineer# 删除键值对delperson[city]removedperson.pop(job)# 返回并删除print(fRemoved:{removed})常用字典方法Python 内置了丰富的字典操作方法student{name:David,math:90,english:85}# 获取所有键print(student.keys())# dict_keys([name, math, english])# 获取所有值print(student.values())# dict_values([David, 90, 85])# 获取所有键值对print(student.items())# dict_items([...])# 更新字典student.update({physics:88,math:92})print(student)# 清空字典student.clear()print(student)# {}字典遍历字典支持多种遍历方式灵活高效scores{Alice:85,Bob:92,Charlie:78}# 遍历键默认fornameinscores:print(name)# 遍历键值对forname,scoreinscores.items():print(f{name}:{score})# 按值排序遍历fornameinsorted(scores,keyscores.get,reverseTrue):print(f{name}:{scores[name]})字典推导式使用推导式可以简洁地创建和转换字典# 从列表创建字典squares{x:x**2forxinrange(1,6)}print(squares)# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}# 过滤字典original{a:1,b:2,c:3,d:4}evens{k:vfork,vinoriginal.items()ifv%20}print(evens)# {b: 2, d: 4}# 转换键值swapped{v:kfork,vinoriginal.items()}print(swapped)# {1: a, 2: b, 3: c, 4: d}嵌套字典处理复杂数据时可以使用嵌套字典结构# 嵌套字典表示学生信息students{Alice:{age:20,grades:{math:90,english:85}},Bob:{age:22,grades:{math:78,english:92}}}# 访问嵌套值print(students[Alice][grades][math])# 90# 遍历嵌套字典forname,infoinstudents.items():print(f\n{name}(age{info[age]}):)forsubject,gradeininfo[grades].items():print(f{subject}:{grade})使用collections模块collections模块提供了增强的字典类型fromcollectionsimportdefaultdict,Counter,OrderedDict# defaultdict: 自动为缺失键提供默认值word_countdefaultdict(int)words[apple,banana,apple,orange,banana,apple]forwordinwords:word_count[word]1print(dict(word_count))# {apple: 3, banana: 2, orange: 1}# Counter: 快速计数counterCounter(words)print(counter.most_common(2))# [(apple, 3), (banana, 2)]# OrderedDict: 有序字典Python 3.7 内置 dict 已支持顺序odOrderedDict([(a,1),(b,2),(c,3)])字典合并操作Python 3.9 引入了简洁的字典合并语法dict1{a:1,b:2}dict2{b:3,c:4}# 使用 | 合并Python 3.9mergeddict1|dict2print(merged)# {a: 1, b: 3, c: 4}# 使用 | 就地更新dict1|dict2print(dict1)# {a: 1, b: 3, c: 4}# 传统方式使用 ** 解包combined{**dict1,**dict2}自定义字典类继承dict可以实现自定义的字典行为classCaseInsensitiveDict(dict):不区分大小写的字典def__setitem__(self,key,value):super().__setitem__(key.lower(),value)def__getitem__(self,key):returnsuper().__getitem__(key.lower())def__contains__(self,key):returnsuper().__contains__(key.lower())# 使用自定义字典cidCaseInsensitiveDict()cid[Name]Aliceprint(cid[name])# Aliceprint(NAMEincid)# True性能注意事项字典操作在 Python 中需要特别注意性能和内存问题字典的键必须是可哈希hashable的对象如字符串、数字、元组字典查找操作的时间复杂度为 O(1)适合频繁查询场景对于大量数据考虑使用collections.Counter进行计数统计避免在循环中频繁创建临时字典可预先分配或使用setdefault以上代码示例涵盖了 Python 3 字典的主要概念和操作从基础用法到高级技巧为开发者提供了全面的参考。