Python字典、列表有方法总结

以下是 Python 中字典(dict)和列表(list)所有方法的详细说明,包含作用描述和使用示例:


一、字典(dict)方法

1. 基础操作方法

方法作用示例
clear() 清空字典 d.clear() → {}
copy() 浅拷贝字典 new_d = d.copy()
fromkeys(keys, value) 从键列表创建新字典 dict.fromkeys(['a','b'], 0) → {'a':0, 'b':0}
get(key, default) 安全获取值(键不存在返回默认值) d.get('x', 'not found')
items() 返回键值对视图 for k,v in d.items():
keys() 返回键视图 list(d.keys())
values() 返回值视图 list(d.values())

2. 更新/修改方法

方法作用示例
update(other_dict) 合并字典 d.update({'x':1})
setdefault(key, default) 键不存在时设置默认值 d.setdefault('x', []).append(1)
pop(key, default) 删除键并返回值 val = d.pop('x')
popitem() 删除并返回最后插入的键值(Python 3.7+有序) k,v = d.popitem()

3. 高级方法(Python 3+)

方法作用示例
__missing__() 当 __getitem__ 找不到键时调用 需子类化实现
reversed() 逆序键视图(Python 3.8+) for k in reversed(d):

使用示例

# 创建字典
d = {'a': 1, 'b': 2}

# 安全访问
print(d.get('c', 0))  # 输出: 0

# 更新字典
d.update({'c': 3})    # d → {'a':1, 'b':2, 'c':3}

# 字典推导式
{k: v*2 for k,v in d.items()}

二、列表(list)方法

1. 元素操作

方法作用示例
append(x) 末尾添加元素 lst.append(4)
extend(iterable) 合并可迭代对象 lst.extend([4,5])
insert(i, x) 在索引i处插入x lst.insert(1, 'x')
remove(x) 删除第一个值为x的元素 lst.remove(2)
pop(i) 删除并返回索引i的元素(默认-1) lst.pop()

2. 查询/统计

方法作用示例
index(x, start, end) 返回x的索引 lst.index(2)
count(x) 统计x出现次数 lst.count(2)
sort(key, reverse) 原地排序 lst.sort(reverse=True)
reverse() 原地逆序 lst.reverse()

3. 列表特性方法

方法作用示例
copy() 浅拷贝列表 new_lst = lst.copy()
clear() 清空列表 lst.clear() → []
__reversed__() 返回逆序迭代器 for x in reversed(lst):

使用示例

# 创建列表
lst = [1, 2, 3]

# 添加元素
lst.append(4)       # [1,2,3,4]
lst.extend([5,6])   # [1,2,3,4,5,6]

# 排序
lst.sort(reverse=True)  # [6,5,4,3,2,1]

# 列表推导式
[x*2 for x in lst if x>3]  # [12,10,8]

三、关键区别

特性字典(dict)列表(list)
存储方式 键值对 有序序列
访问方式 键访问 d[key] 索引访问 lst[0]
内存占用 更高(哈希表) 更低
查找速度 O(1) O(n)
Python版本特性 3.7+保持插入顺序 始终有序

四、最佳实践

字典场景

  1. 快速查找:当需要根据键快速检索值时

    user_db = {'id1': {'name': 'Alice'}, 'id2': {'name': 'Bob'}}
    print(user_db.get('id1'))  # 快速访问
  2. 去重计数:

    from collections import defaultdict
    counts = defaultdict(int)
    for item in items:
        counts[item] += 1

列表场景

  1. 维护顺序:需要保持元素顺序时

    log_records = []
    log_records.append('event1')  # 按时间顺序存储
  2. 栈/队列操作:

    # 栈
    stack = []
    stack.append('push'); stack.pop()
    
    # 队列 (使用collections.deque更高效)
    from collections import deque
    queue = deque()
    queue.append('enqueue'); queue.popleft()

五、性能注意

  • 字典:键必须是可哈希类型(不可变类型如字符串/数字/元组)

  • 列表:

    • 插入/删除开头元素用 collections.deque 更高效

    • 判断元素是否存在时,x in set() 比 x in list 快得多

掌握这些方法后,可以更高效地处理Python中的结构化数据!

posted @ 2025-06-22 12:14  郭慕荣  阅读(105)  评论(0)    收藏  举报