Python中列表和字典的区别以及适用的场景

本文详细对比了Python中List(列表)和Dict(字典)的特点与应用,解释了两者作为不同数据结构的区别,并通过具体例子阐述了它们在实际场景中的用途。
部署运行你感兴趣的模型镜像

列表是序列,可以理解为数据结构中的数组,字典可以理解为数据结构中的hashmap

他俩都可以作为集合来存储数据

从差异特征上来说

1. list是有序的,dict是无需的

2. list通过索引访问,dict使用key访问

3. list随着数量的正常增长要想查找元素的时间复杂度为O(n), dict不随数量而增长而变化,时间负责都为O(1)

4. dict的占用内存稍比list大,会在1.5倍左右


特征决定用途:

list一般可作为队列、堆栈使用,而dict一般作为聚合统计或者快速使用特征访问等

从应用场景来说:


list 是记录简单有序数据的,就是一对一的那种,可以理解为一维数组.

比如你记录猫的名字,就可以用list = ['第1只猫名字','第2只猫名字'] ...

比如你记录饭店的菜品,就可以用list = ['第1个菜红烧肉','第2个菜红烧大肠',第3个菜'红烧排骨'] ...

这里的记录,是多条记录重复的,需要按一定顺序来记录.

list 也可以有嵌套,嵌套里面的list仍然可以理解为一维数组

比如常见的季度与月份的关系 list = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

又或者你从excel读取一行数据,存到list中,也需要用到list嵌套

又或者你从SQL读取一行数据,存到list中,也会用的list嵌套.

这里的记录,是多条按一定顺序存放的,仍然需要按一定顺序来读取存放.


上面是我理解的list,有序的应用场景.


dict 是记录复杂无序数据,就是一对多,可以理解为多维数组.

比如你记录一次野餐朋友带的食物数量, dict = {'小明':{'红烧肉':6,'大闸蟹':8,'水煮鱼':1},'小花':{'黄瓜':9,'番茄':2},'小六子':{'啤酒':30,'可乐':40}}

dict可以嵌套list,把无序的数据调整为有序的数据,可以简单地理解为,一对多个一维数组,本质上还是多维数组.

比如你要记录同学们有多少个女朋友,dict = {'小明':['1号女友','2号女友'],'大个子':['1号女友','2号女友','3号女友']},你要统计谁的女朋友多,这个就比较明显地体现出来了.

比如你要记录一次会议参加的人员的基本信息,大家的信息都不一样时,也是无序随机事件:

dict = {'男性':{'张博':{'年龄':30,'职业':'老师','级别':'高级教师'},'王强':{'手机':'1309999999'}},'女性':{'小花':{'爱好':'化妆','职业':'美容师'}}}




您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 3.1 数据结构特性 列表(`List`)是一种有序且可变的数据结构,使用方括号 `[]` 定义,用于存储一系列元素。列表中的每个元素都有一个索引,索引从 0 开始,可以通过索引访问或修改元素。例如: ```python name_list = ["China", "America", "England"] ``` 列表适用于需要顺序存储按位置访问的场景[^1]。 字典(`Dictionary`)是一种无序、可变的数据结构,使用花括号 `{}` 定义,由键值对(key-value pairs)组成。每个键(key)必须是唯一的,用于映射到对应的值(value)。例如: ```python country_capital = {"China": "Beijing", "America": "Washington", "England": "London"} ``` 字典适用于需要通过键快速查找值的场景,其访问效率高于列表[^2]。 ### 3.2 元素访问方式 列表通过索引进行访问,例如 `name_list[0]` 可以访问第一个元素。索引的范围从 0 到 `len(name_list) - 1`,超出范围会导致索引错误。 字典通过键进行访问,例如 `country_capital["China"]` 可以访问键 `"China"` 对应的值。如果键不存在,可以通过 `dict.get(key, default)` 方法提供默认值,避免程序崩溃[^3]。 ### 3.3 可变性与操作 列表支持多种操作,包括添加元素(如 `append()`、`insert()`)、删除元素(如 `remove()`、`pop()`)、排序(如 `sort()`)等。例如: ```python name_list.append("France") # 添加元素 name_list.remove("America") # 删除元素 ``` 字典也支持多种操作,包括添加或更新键值对(如 `dict[key] = value`)、删除键值对(如 `del dict[key]`、`pop()`)、获取键值对视图(如 `items()`、`keys()`、`values()`)等。例如: ```python country_capital["France"] = "Paris" # 添加键值对 country_capital.pop("America") # 删除键值对 ``` 字典的 `update()` 方法可以批量更新键值对,适用于合并多个字典的情况。 ### 3.4 使用场景对比 列表适用于存储顺序明确的数据,例如一组连续的日期、价格等。例如,可以使用列表存储某股票近 10 天的收盘价: ```python stock_prices = [100, 102, 101, 105, 103, 107, 108, 106, 109, 110] ``` 字典适用于存储需要快速查找的数据,例如存储用户信息,通过用户名查找对应的邮箱或电话号码: ```python user_info = {"Alice": "alice@example.com", "Bob": "bob@example.com"} ``` 字典的查找效率高于列表,因为字典使用哈希表实现,查找时间复杂度接近 O(1),而列表的查找时间复杂度为 O(n)[^2]。 ### 3.5 总结 | 特性 | 列表(List) | 字典(Dictionary) | |--------------------|--------------------------------------|----------------------------------------| | 数据顺序 | 有序 | 无序 | | 访问方式 | 通过索引 | 通过键 | | 元素类型 | 可以存储任意类型 | 键必须是不可变类型(如字符串、数字) | | 修改操作 | 支持添加、删除、排序等 | 支持添加、删除、更新键值对 | | 查找效率 | O(n) | O(1) | | 适用场景 | 顺序存储、按位置访问 | 快速查找、键值映射 | ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值