当前位置: 首页 > news >正文

python list,dict操作

一、list 操作

Python中的列表是一种有序、可变的数据类型,可以存储任意类型的数据。以下是Python中常用的列表操作:

  1. 创建列表:使用[]list()函数创建一个空列表,或者使用[value1, value2, ...]创建一个包含初始值的列表。

  2. 访问列表元素:使用下标(从0开始)访问列表中的元素,例如lst[0]表示访问列表中的第一个元素。

  3. 切片操作:使用切片操作符[start:end:step]来获取列表中的子列表,其中start表示开始位置,end表示结束位置(不包含),step表示步长。例如,lst[1:4]表示获取列表中第2个到第4个元素。

  4. 修改列表元素:使用下标(从0开始)修改列表中的元素,例如lst[0] = value表示将列表中的第一个元素修改为value

  5. 添加元素:使用append()方法向列表的末尾添加一个元素,使用extend()方法将另一个列表中的元素添加到当前列表的末尾,使用insert()方法在指定位置插入一个元素。

  6. 删除元素:使用del语句或remove()方法删除列表中的元素,使用pop()方法删除列表中指定位置的元素并返回其值。

  7. 获取列表长度:使用len()函数获取列表中元素的数量。

  8. 列表排序:使用sorted()函数或list.sort()方法对列表元素进行排序。

  9. 列表去重:使用set()函数或listset()方法来去除列表中的重复元素。

  10. 列表反转:使用reverse()方法将列表中的元素翻转。

  11. 列表拼接:使用+运算符将两个列表拼接成一个新列表,使用*运算符将列表复制指定次数。

  12. 列表查找:使用index()方法查找指定元素在列表中的位置,使用in关键字判断指定元素是否在列表中。

  13. 列表统计:使用count()方法统计指定元素在列表中出现的次数。

  14. 列表遍历:使用for循环逐个访问列表中的元素。

  15. 列表推导式:使用列表推导式可以快速生成一个新的列表,例如[x for x in lst if x % 2 == 0]

1、list位置逆序:

Python中的list.reverse()方法是用于将列表中的元素翻转,会直接修改原列表。

该方法没有返回值,即返回值为None

使用方式如下:

    lst = [1, 2, 3, 4, 5]lst.reverse()print(lst)

输出结果:[5, 4, 3, 2, 1]


注意,list.reverse()方法是直接修改原列表的顺序,而不是创建一个新的翻转后的列表。如果需要创建一个新的翻转后的列表,可以使用切片操作符[::-1],例如:

lst = [1, 2, 3, 4, 5]
new_lst = lst[::-1]
print(new_lst)

输出结果:[5, 4, 3, 2, 1] 

2、list排序:

Python中,可以使用sorted()函数和list.sort()方法对列表进行排序。

sorted()函数用于对任意可迭代对象进行排序,并返回一个新的已排序的列表

如:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
new_lst = sorted(lst)
print(new_lst)

输出结果:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]


注意:默认情况下,sorted()函数和list.sort()方法都是按升序排序的。如果需要按降序排序,可以使用reverse=True参数,例如:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
new_lst = sorted(lst, reverse=True)
print(new_lst)lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort(reverse=True)
print(lst)

输出结果:

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]


如果列表中的元素是自定义对象,可以通过key参数指定排序的关键字。例如,以下代码按照学生的年龄进行倒序排序:

class Student:def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return f"{self.name} ({self.age})"students = [Student("Alice", 23),Student("Bob", 21),Student("Charlie", 20),Student("David", 22),
]sorted_students = sorted(students, key=lambda s: s.age,reverse=True)
print(sorted_students)

输出结果:[Alice (23), David (22), Bob (21), Charlie (20)]

3、list去重:

Python中,可以使用set()函数或listset()方法来去除列表中的重复元素。例如:

lst = [1, 2, 3, 2, 4, 3, 5, 6, 5]
new_lst = list(set(lst))
print(new_lst)

输出结果:[1, 2, 3, 4, 5, 6]


如果需要保持原来的元素顺序,可以使用列表推导式和not in语句来实现去重。如:

lst = [1, 2, 3, 2, 4, 3, 5, 6, 5]
new_lst = []
for x in lst:if x not in new_lst:new_lst.append(x)
print(new_lst)

 输出结果:[1, 2, 3, 4, 5, 6]

4、list 元素统计

 使用python 计数器

from collections import Counter
lst=[1,2,2,2,3,6,6,6,6]
a = Counter(lst)
print(type(a),a)
print([i for i in a])
print(list(a))
print({k:v for k,v in a.items()})
print(dict(a))

输出结果:

<class 'collections.Counter'> Counter({6: 4, 2: 3, 1: 1, 3: 1})
[1, 2, 3, 6]
[1, 2, 3, 6]
{1: 1, 2: 3, 3: 1, 6: 4}
{1: 1, 2: 3, 3: 1, 6: 4}

二、dict操作

1.创建字典

my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

2.访问字典元素

value1 = my_dict['key1']

3.添加或修改字典元素

my_dict['key4'] = 'value4'  # 添加元素
my_dict['key1'] = 'new_value1'  # 修改元素

4.删除字典元素

del my_dict['key3']  # 删除指定元素
my_dict.clear()  # 清空整个字典

5.遍历字典

for key, value in my_dict.items():print(key, value)

6.获取字典键值对数量

num_items = len(my_dict)

7.检查字典中是否存在某个键值对

if 'key1' in my_dict:print('key1 exists')

8.获取字典所有键或所有值

keys = my_dict.keys()
values = my_dict.values()

9.合并两个字典

my_dict1 = {'key1': 'value1', 'key2': 'value2'}
my_dict2 = {'key3': 'value3', 'key4': 'value4'}
my_dict1.update(my_dict2)  # 将my_dict2合并到my_dict1中

10.获取指定键的值,如果键不存在则返回默认值

value = my_dict.get('key5', 'default_value')

11.将字典转换为列表

my_list = list(my_dict.items())

12.将列表转换为字典

my_list = [('key1', 'value1'), ('key2', 'value2')]
my_dict = dict(my_list)

13.通过 values 取到 key 的方法:

dic={"a":1,"b":2,"c":3}
list(dic.keys())[list(dic.values()).index(1)]

输出结果:'a'

1、dict 有序创建:

在 Python 3.7 及以后的版本中,字典是有序的,即插入顺序与遍历顺序一致。如果需要在早期版本中创建有序字典,可以使用第三方库 collections 中的 OrderedDict

使用 OrderedDict 的方式和普通字典类似,只需要在创建字典时使用 OrderedDict 替代 dict 即可:

from collections import OrderedDictmy_dict = OrderedDict({'key1': 'value1', 'key2': 'value2', 'key3': 'value3'})

此时,my_dict 中的键值对的顺序与插入的顺序一致。可以通过遍历字典来验证:

输出结果:

key1 value1
key2 value2
key3 value3

需要注意的是,OrderedDict 比普通字典的内存消耗要大一些,因为它需要维护一个双向链表来记录插入顺序。如果对字典的顺序并不关心,可以使用普通字典来减少内存开销。

2、dict key值排序:

要对字典的键按照字典序(即按照字母顺序)进行排序,可以将字典的键转换为列表,然后使用 sorted() 函数进行排序。

如:

my_dict = {'c': 1, 'a': 3, 'b': 2}
sorted_keys = sorted(my_dict.keys())

输出结果:['a', 'b', 'c']

如果需要按照键对应的值进行排序,可以使用 key 参数指定排序依据:

sorted_keys = sorted(my_dict.keys(), key=lambda x: my_dict[x])

此时,sorted_keys 中的元素是按照值排序后的:

 输出结果:['c', 'b', 'a']


注意:sorted() 函数返回的是一个列表,而不是字典,因为字典是无序的。如果需要按照键排序后创建一个新的字典,可以使用字典推导式:

sorted_dict = {k: my_dict[k] for k in sorted(my_dict.keys())}

此时,sorted_dict 中的元素是按照键排序后的字典:

输出结果:{'a': 3, 'b': 2, 'c': 1}

http://www.lryc.cn/news/90118.html

相关文章:

  • 我有一个页面a,在页面a中调用了一个组件,然后组件中要切换页面a的一块区域,该怎么实现?
  • ChatGPT唤醒AI游戏:AIGC持续走深,游戏或成AI最佳抓手
  • 远程服务和web服务和前端,三方通过socket和websocket进行双向通信传输数据
  • Linux 网络基础(2)应用层(http/https协议、请求格式、响应格式、session、cookie、加密传输)
  • 解决sshfs挂载报错
  • 由于过多的连接错误而被 MySQL服务器 阻止
  • Go语言实现JDBC
  • ubuntu修改环境变量的几种方法
  • 基于html+css的图展示95
  • 数据库基础——5.运算符
  • JMeter 性能测试基本过程及示例
  • 漏洞复现 CVE-2018-2894 weblogic文件上传
  • 二叉树:填充每个节点的下一个右侧节点指针(java)
  • Android 12.0修改系统默认设备类型的平板电脑类型为设备类型
  • debug研究
  • zabbix监控系统
  • Python入门学习
  • 自动驾驶嵌入式开发工程师:车载SOC开发修炼秘籍
  • Linux之搭建环境
  • 泡利矩阵(一)
  • 通用支付系统设计
  • metaRTC+ZLMediaKit实现webrtc的推拉流
  • 【JavaSE】Java基础语法(八)
  • Java如何配置环境变量
  • android 12.0SystemUI 状态栏下拉快捷添加截图快捷开关
  • 【无标题】 Vue 路由库Router 【重点】 - 安装 - 基本使用 - 路由配置 - 路由模式 - 路由传递参数 - 路由内置对象 - 路由守卫
  • RocksDB笔记 -- 整体架构
  • 设计模式之单例模式入门介绍
  • RHCE 作业三
  • 90.qt qml-Table表格组件(支持表头表尾固定/自定义颜色/自定义操作按钮/插入排序)