iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python-字典和集合编程技巧
  • 305
分享到

Python-字典和集合编程技巧

python开发语言 2023-08-31 06:08:26 305人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

hello,这里是Token_w的博客,欢迎您的到来 今天主要讲解python字典和集合在实际编程中的使用技巧 整理不易,对您有所帮助,希望得到你的支持!感谢!!! 目录 1.如何在列表

hello,这里是Token_w的博客,欢迎您的到来
今天主要讲解python字典和集合在实际编程中的使用技巧
整理不易,对您有所帮助,希望得到你的支持!感谢!!!

目录

1.如何在列表、字典、集合中根据条件筛选数据?

实际案例

  • 案例1:过滤掉列表[3, 9, -1, 10, 20, -2, …] 中的负数
  • 案例2:筛出字典{‘lisi’: 79, ‘Jin’: 88, ‘lucy’: 93, … }中值高于90的项
  • 案例3:筛出集合{77, 89, 34, 20, 21…}中能被3整除的元素
    这类问题比较简单,通常的做法就是依次迭代列表、字典、集合中的每个项,进行条件判断。

但是在Python中,还有更高级的方法来解决这类问题,并且更简单高效。

01 案例1:过滤掉列表[3, 9, -1, 10, 20, -2, …] 中的负数

方法一:使用 filter 函数

from random import randint# 使用列表解析生成 -10~10 之间的10个元素data = [randint(-10, 10) for _ in range(10)]print('原始列表为:' , data)# filter(function or None, iterable) --> filter objectdata_o = filter(lambda x: x >= 0, data)for each in data_o:        print(each)

方法二:使用列表解析

from random import randint# 使用列表解析生成 -10~10 之间的10个元素data = [randint(-10, 10) for _ in range(10)]print('原始列表为:',  data)data_o = [x for x in data if x >= 0]print(data_o)

02 案例2:筛出字典{‘lisi’: 79, ‘Jin’: 88, ‘lucy’: 93, … }中值高于90的项

from random import randint# 使用字典解析生成 一个字典d ={x: randint(60, 100) for x in range(1, 10)}print(d)d_o = {k: v for k, v in d.items() if v >= 90}print(d_o)

03 案例3:筛出集合{77, 89, 34, 20, 21…}中能被3整除的元素

from random import randint# 使用集合解析生成 -10~10 之间的10个元素data = {randint(-10, 10) for _ in range(10)}print('原始集合为:', data)data_o = {x for x in data if x % 3 == 0}print(data_o)

2.如何为元组中的每个元素命名,提高程序可读性?

stuents = ('Jim', 16, 'male', 'jim8721@qq.com')name=stuents[0]age=stuents[1]sex= stuents[2]email=stuents[3]print(name, age, sex, email)

01 方法一:定义类似与其他语言的枚举类型,也就是定义一系列数值常量

s=stuents = ('Jim', 16, 'male', 'jim8721@qq.com')NAME, AGE, SEX, EMAIL = range(4)name=s[NAME]age=s[AGE]sex= s[SEX]email=s[EMAIL]print(name, age, sex, email)

02 方法二:使用标准库中 collections.nameedtuple 替代内置 tuple

from collections import namedtupleStudent = namedtuple('Student', ['name', 'age', 'sex', 'email'])s = Student('Jim', 16, 'male', 'jim182@qq.com')print(s)# Student(name='Jim', age=16, sex='male', email='jim182@qq.com')print(s.name)# 'Jim'print(s.age)# 16print(s.sex)# 'male'print(s.email)# 'jim182@qq.com'

3.如何统计序列中元素的出现频度?

案例1:

方法一:传统方法

from random import randint# 随机生成一个列表data = [randint(0, 20) for _ in range(30)]# 以列表中的值为字典的键,0为字典的值建立字典c = dict.fromkeys(data, 0)# 依次遍历列表,遇到一个元素,就把字典中对应的键的值加1for x in data:    c[x] += 1print(c)

方法二:使用 collections.Counter 对象

将序列传入 Counter 的构造器,得到 Counter 对象是元素频率的字典
Counter.most_common(n) 方法得到频率最高的 n 个元素的列表

from random import randintfrom collections import Counter# 随机生成一个列表data = [randint(0, 20) for _ in range(30)]c = Counter(data)# 得到的 c 就是一个collections.Counter类型的数据,和方法 一 结果一样# 用法与字典一样,例如 c[2] , 就是得到 键为2 对应的值print(c)# 另外,还可以使用 most_common() 方法得到 出现频率最高的几个键和值print(c.most_common(3))  # 输出前3名

案例2:

from collections import Counterimport rewith open('./test.txt', 'r') as f:    txt = f.read()# 使用 正则表达式 对文本进行切割,按照 非字母字符 进行切割l1 = re.split('\W+', txt)c = Counter(l1)# 得到频率最高的10个单词print(c.most_common(10))

4.如何根据字典中值的大小,对字典中的项排序

01 方法一:使用zip将字典数据转换为元组

from random import randint# 生成随机字典d = {x:randint(60,100) for x in 'xyzabc'}print(d)# 把值放在前面,键放在后面,构成元组,每个元组为列表的一个项# 得到的结果为 [(74, 'z'), (80, 'y')...]形式list1 = zip(d.values(), d.keys())# 然后对得到的列表进行排序,就会以列表中的元组的第一项排序,相同时再比较第二项print(sorted(list1))

02 方法二:使用 sorted 函数的 key 参数

from random import randint# 生成随机字典d = {x:randint(60,100) for x in 'xyzabc'}print(d)# d.items() 也是一个元组的列表,只是元组中键在前,值在后# 使用 key 参数设置以第二项 (值)作为排序依据print(sorted(d.items(), key = lambda x: x[1]))

5.如何快速找到多个字典中的公共键?

01 方法一:传统方法,依次遍历

from random import randint, sample# 随机产生 3 场球赛的 进球人和数s1 = {x: randint(1,4) for x in sample('abcdefg',randint(3,6))}s2 = {x: randint(1,4) for x in sample('abcdefg',randint(3,6))}s3 = {x: randint(1,4) for x in sample('abcdefg',randint(3,6))}print(s1)print(s2)print(s3)# 传统方法res = []for k in s1:    if k in s2 and k in s3:        res.append(k)       print(res)

02 方法二:利用集合(set)的交集操作

利用字典的keys() 方法,得到一个字典的 keys 的集合
取所有字典的 keys 的集合的交集

from random import randint, sample# 随机产生 3 场球赛的 进球人和数s1 = {x: randint(1,4) for x in sample('abcdefg',randint(3,6))}s2 = {x: randint(1,4) for x in sample('abcdefg',randint(3,6))}s3 = {x: randint(1,4) for x in sample('abcdefg',randint(3,6))}print(s1)print(s2)print(s3)print(s1.keys() & s2.keys() & s3.keys())

6.如何让字典保持有序?

d = dict()d['Jim']=(1.35)d['Leo']=(2,37)d['Bob']=(3,45)for k in d:    print(k)

方法:使用collections.OrderedDict

以OrderedDict替代字典Dict,依次将选手成绩存入OrderedDict。

from collections import OrderedDictd = OrderedDict()d['Jim']=(1.35)d['Leo']=(2,37)d['Bob']=(3,45)for k in d:    print(k)

7.如何实现用户的历史记录功能?

原始代码如下:

from random import randintN = randint(0, 100)def guess(k):if k == N:print('猜对了')return Trueelif k < N:print('猜小了')else:print('猜大了')return Falsewhile True:line = input("please input a number:")if line.isdigit():k = int(line)if guess(k):break

我们希望保存最近 5 次猜的数字,之前的就被删除

解决方案:

使用容量为 n (本例中 n=5) 的队列存储历史记录
使用标准库中的 deque,它是一个双端循环队列

from random import randintfrom collections import dequehistory = deque([], 5)N = randint(0, 100)def guess(k):if k == N:print('猜对了')return Trueelif k < N:print('猜小了')else:print('猜大了')return Falsewhile True:line = input("please input a number:")if line.isdigit():k = int(line)history.append(k)if guess(k):breakelif line == 'history' or line == 'h?':print(history)

若我们还希望 程序下次运行时,可以查看之前的历史记录,就需要将 队列对象 保存到磁盘,可以使用 pickle

pickle 可以将任意类型的数据(包括 数字型、列表、字典、字符串等)保存到磁盘文件,在需要的时候还可以正常读回为原数据

解决方案:程序退出前,可以使用 pickle 将队列对象存入文件,再次运行程序时将其导入

pickle 的用法:

写数据:

import pickledata = [1, 2, 3, 4]with open('data.dat', 'wb') as f:    pickle.dump(data, f)

读数据:

import picklewith open('data.dat', 'rb') as f:    data = pickle.load(f)print(data)

总结

今天就是借助一些基础的代码案例,给大家分享讲解Python中的字典和集合在实际编程中的一些使用技巧,希望对您有所帮助!

来源地址:https://blog.csdn.net/weixin_61587867/article/details/132270140

--结束END--

本文标题: Python-字典和集合编程技巧

本文链接: https://www.lsjlt.com/news/384241.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python-字典和集合编程技巧
    hello,这里是Token_w的博客,欢迎您的到来 今天主要讲解Python字典和集合在实际编程中的使用技巧 整理不易,对您有所帮助,希望得到你的支持!感谢!!! 目录 1.如何在列表...
    99+
    2023-08-31
    python 开发语言
  • python字典和集合
      1. 字典字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必...
    99+
    2023-01-31
    字典 python
  • python技巧 合并两个字典
    python 3.5+ 版本 In [1]: a={'x':2,'y':4}In [2]: b={'c':1,'d':3}In [3]: c={'c':3,'y':6}In [4]:  w={**a,**b}In [5]: wOut[5...
    99+
    2023-01-30
    字典 两个 技巧
  • Python中的集合和字典
    目录1 集合2 字典(key:value)1 集合 集合可以使用大括号({})或者set()函数进行创建,但是创建一个空集合必须使用set()函数,而不能用{},大括号是用来创建一个...
    99+
    2022-11-13
  • Python字典和集合讲解
    目录一、Python字典1.什么是字典2.字典的创建方式2.1 通过其他字典创建 2.2 通过关键字参数创建2.3 通过键值对的序列创建2.4 通过dict和zip结合创建3.字典的...
    99+
    2022-11-12
  • python-字典dict和集合set
    目录1.字典 字典的相关操作 获取字典的长度2.集合 1.字典 字典是python中的一种数据结构。 它的内容由**键-值(key-value)**的方式存在。 dict拥有良好的...
    99+
    2022-11-12
  • Python中的字典合并与列表合并技巧
    目录前言1 合并字典2 合并列表前言 又到了每日分享Python小技巧的时候了,今天给大家分享的是Python中两种常见的数据类型合并方法。 1 合并字典 在某些场景下,我们需要对两...
    99+
    2022-11-11
  • python中字典和集合是什么
    这篇文章主要介绍了python中字典和集合是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。字典/集合理解就像我们使用列表推导一样,我们也可以使用字典/集合推导。它们易于使...
    99+
    2023-06-27
  • Python字典和集合如何使用
    这篇文章主要介绍“Python字典和集合如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python字典和集合如何使用”文章能帮助大家解决问题。字典简介Python 中字典和集合也是非常相近的...
    99+
    2023-07-04
  • python--字典(dict)和集合(set)详解
    目录一、集合1.集合定义2.创建集合3.去重4.集合增删5.关系运算6.排序7.frozenset8.练习9.特性二、字典1.字典定义2.字典打印3.字典元素删除4.setdefau...
    99+
    2022-11-12
  • Python 编程操作连载之字符串,列表,字典和集合处理
    目录1.如何统计序列中元素出现的频率并排序?2.统计单词次数1.如何统计序列中元素出现的频率并排序? 统计序列中元素出现的频率的结果肯定是一个字典,Key 为序列中的元素而 Valu...
    99+
    2022-11-11
  • python基础入门之字典和集合
    目录正文字典集合python 中有6大标准类型: 数字(Number) 字符串(String) 列表(List) 元组(Tumple) 集合(Set) 字典(Dictionary...
    99+
    2022-11-12
  • python的字典和集合你了解吗
    目录字典修改字典删除字典元素字典键的特性字典内置函数&方法集合集合的基本操作集合内置方法完整列表总结字典 d = {key1 : value1, key2 : value2,...
    99+
    2022-11-13
  • Python中的集合和字典如何使用
    这篇文章主要讲解了“Python中的集合和字典如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的集合和字典如何使用”吧!1 集合集合可以使用大括号({})或者set()函...
    99+
    2023-06-29
  • python中字典和集合的常用操作
    本篇内容主要讲解“python中字典和集合的常用操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中字典和集合的常用操作”吧!#字典:存多个值,key-value存取,取值速度快,k...
    99+
    2023-06-02
  • Python编程的若干个经典小技巧
    1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x,y= 10,20 print(x,y) x,y= y,x print(x,y) #1 (10, 20) #2 (20,...
    99+
    2023-01-30
    小技巧 若干个 经典
  • 如何分析python中字典dict和集合set
    今天就跟大家聊聊有关如何分析python中字典dict和集合set,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.字典字典是python中的一种数据结构。它的内容由**键-值(ke...
    99+
    2023-06-22
  • python 列表,集合和字典的增删改查
    目录一 列表二 集合三 字典总结 一 列表 # 列表:包含0个或多个对象引用的有序队列,用中括号[]表示 # 增加 a = [] a.append(1) # a.append...
    99+
    2022-11-12
  • Python学习之字典和集合的使用详解
    目录字典简介字典的基本方法字典元素添加获取字典键对应的值字典元素的修改字典元素的删除字典的遍历集合学习集合添加元素集合删除元素统计集合个数,判断元素是否存在,清空集合集合运算字典简介...
    99+
    2022-11-11
  • Python列表、字典、元组和集合实例分析
    这篇文章主要介绍了Python列表、字典、元组和集合实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python列表、字典、元组和集合实例分析文章都会有所收获,下面我们一起来看看吧。列表1.列表什么是列表...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作