python数据结构与算法(二)
1、如何找出序列中出现次数最多的元素
from collections import Counter
words = [
‘look’, ‘into’, ‘my’, ‘eyes’, ‘look’, ‘into’, ‘my’, ‘eyes’,
‘the’, ‘eyes’, ‘the’, ‘eyes’, ‘the’, ‘eyes’, ‘not’, ‘around’, ‘the’,
‘eyes’, “don’t”, ‘look’, ‘around’, ‘the’, ‘eyes’, ‘look’, ‘into’,
‘my’, ‘eyes’, “you’re”, ‘under’]
word_counts = Counter(words)
出现频率最高的 3 个单词
top_three = word_counts.most_common(3)
#如何增加手动计数
morewords = [‘why’,‘are’,‘you’,‘not’,‘looking’,‘in’,‘my’,‘eyes’]
for word in morewords:
word_counts[word] += 1
word_counts[‘eyes’]
#或者使用update的方法
word_counts.update(morewords)
#Counter的数学运算
a = Counter(words)
b = Counter(morewords)
a[‘eyes’]
b[‘eyes’]
a+b
c[‘eyes’]
2、通过某个关键字排序一个字典列表
from operator import itemgetter
rows = [
{‘fname’: ‘Brian’, ‘lname’: ‘Jones’, ‘uid’: 1003},
{‘fname’: ‘David’, ‘lname’: ‘Beazley’, ‘uid’: 1002},
{‘fname’: ‘John’, ‘lname’: ‘Cleese’, ‘uid’: 1001},
{‘fname’: ‘Big’, ‘lname’: ‘Jones’, ‘uid’: 1004}
]
rows_by_fname = sorted(rows, key=itemgetter(‘fname’))
rows_by_uid = sorted(rows, key=itemgetter(‘uid’))
print(rows_by_fname)
print(rows_by_uid)
#或者使用itemgetter()也可以
rows_by_lfname = sorted(rows, key=itemgetter(‘lname’,‘fname’))
print(rows_by_lfname)
3、通过某个字段将记录分组,itertools.groupby() 函数应用于数据分组
rows = [
{‘address’: ‘5412 N CLARK’, ‘date’: ‘07/01/2012’},
{‘address’: ‘5148 N CLARK’, ‘date’: ‘07/04/2012’},
{‘address’: ‘5800 E 58TH’, ‘date’: ‘07/02/2012’},
{‘address’: ‘2122 N CLARK’, ‘date’: ‘07/03/2012’},
{‘address’: ‘5645 N RAVENSWOOD’, ‘date’: ‘07/02/2012’},
{‘address’: ‘1060 W ADDISON’, ‘date’: ‘07/02/2012’},
{‘address’: ‘4801 N BROADWAY’, ‘date’: ‘07/01/2012’},
{‘address’: ‘1039 W GRANVILLE’, ‘date’: ‘07/04/2012’},
]
from operator import itemgetter
from itertools import groupby
#先按照date排序
rows.sort(key=itemgetter(‘date’))
#遍历,循环将分组的结果打印出来
for date, items in groupby(rows, key=itemgetter(‘date’)):
print(date)
for i in items:
print(’ ', i)
4、过滤序列数据,如果有一个数据序列,想利用一些规则从中提取需要的值或者缩短序列
#使用列表推导式
mylist=[1,4,-5,10,-7,2,3,-1]
a=[n for n in mylist if n > 0]
5、从字典中提取子集,如何提出字典中的部分字典
#字典推导式
prices = {‘ACME’: 45.23,‘AAPL’: 612.78,‘IBM’: 205.55,‘HPQ’: 37.20,‘FB’: 10.75}
#筛选value中查过200
p1 = {key: value for key, value in prices.items() if value > 200}
p1
#提取特定的key
tech_names = {‘AAPL’, ‘IBM’, ‘HPQ’, ‘MSFT’}
p2 = {key: value for key, value in prices.items() if key in tech_names}
p2
#p2也可以这样写,更加简洁
p3 = { key:prices[key] for key in prices.keys() & tech_names }
p3
6、转换过程中同时计算
nums = [1, 2, 3, 4, 5]
s = sum(x * x for x in nums)
s
#例子
import os #导入os
files = os.listdir(‘路径’)#读取文件的名称
if any(name.endswith(’.py’) for name in files): #判断是不是有以.py结尾的文件
print(‘There be python!’)#如果是,则打印There be python
else:
print(‘Sorry, no python.’)#如果不是,则打印There be python
s = (‘ACME’, 50, 123.45)#元组
print(’,’.join(str(x) for x in s))#元组不能直接打印,str(x) for x in s是将遍历并转化成字符串,最后通过join连接,打印
portfolio = [
{‘name’:‘GOOG’, ‘shares’: 50},
{‘name’:‘YHOO’, ‘shares’: 75},
{‘name’:‘AOL’, ‘shares’: 20},
{‘name’:‘SCOX’, ‘shares’: 65}
] #带有字典的列表
min_shares = min(s[‘shares’] for s in portfolio)#取出share最小的值
min_shares
min_shares_portfolio = min(portfolio, key=lambda s: s[‘shares’])
min_shares_portfolio
7、合并多个字典
#collections库中的ChainMap函数,如果出现重复的Key,就会返回到第一次出现的key,也就是返回a为不是b中的z
a = {‘x’: 1, ‘z’: 3 }
b = {‘y’: 2, ‘z’: 4 }
from collections import ChainMap
c = ChainMap(a,b)
c
c[‘x’]
c[‘z’]
而对于字典的更新或删除操作总是影响的是列表中第一个字典
c[‘z’]=89
a[‘z’]#a字典中的z的value由3变成了89
c[‘z’]#c字典中的z的value由3变成了89,这是我修改的
b[‘z’]#b字典中的z的value依旧为3
#也可以使用update() 方法合并两个字典
a = {‘x’: 1, ‘z’: 3 }
b = {‘y’: 2, ‘z’: 4 }
merged = dict(b)#复制一个新的b,update会对原本的字典造成影响
merged.update(a)
python数据结构与算法(二)相关推荐
- Python数据结构与算法(二)--timeit模块
Python内置性能分析,timeit模块 timeit模块可以用来测试一小段Python代码的执行速度. class timeit.Timer(stmt='pass', setup='pass', ...
- Python 数据结构与算法——二叉搜索树的实现
class Tree:本身自然需要维护根节点(root),用于指向树的第一个节点 class Tree:root = None class Node:每一个节点都要维护左子树.右子树 class No ...
- Python数据结构与算法(二)栈和队列
本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...
- python leetcode_leetcode 介绍和 python 数据结构与算法学习资料
for (刚入门的编程)的高中 or 大学生 leetcode 介绍 leetcode 可以说是 cs 最核心的一门"课程"了,虽然不是大学开设的,但基本上每一个现代的高水平的程序 ...
- Python数据结构与算法(一)列表和元组
本系列总结了python常用的数据结构和算法,以及一些编程实现. 参考书籍:<数据结构与算法 Python语言实现> [美]Michael T.Goodrich, Roberto Tama ...
- Python数据结构与算法(1.1)——数据结构与算法导论
Python数据结构与算法(1.1)--数据结构与算法导论 0. 学习目标 1. 数据结构概述 1.1 什么是数据结构 1.2 逻辑结构和物理结构 1.3 抽象数据类型 1.4 数据结构学习的必要性 ...
- python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图
python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...
- 从零开始学数据结构和算法(二)线性表的链式存储结构
链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...
- Python天天美味(32) - python数据结构与算法之堆排序
1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data): for i in ran ...
- python数据结构与算法13_python 数据结构与算法 (13)
python 数据结构与算法 (13) 选择排序 (Selection sort) 是? 种简单直观的排序算法. 它的? 作原理如 下.? 先在未排序序列中找到最?(?)元素, 存放到排序序列的起始位 ...
最新文章
- CODEFORCES 55D
- 实战struts2——用户登录
- 蓝桥杯之第几个幸运数
- [vue] 说说你对proxy的理解
- mysql odbc.ini_ODBC连接mysql
- solr 3.5 配置及应用(二)
- C++ (tensorRT中学习)
- tshark存储数据到mysql_网络分析利器wireshark命令版(2):tshark使用示例
- 使用join()方法 分隔拆分后的数组
- [译]Profile and debug your ASP.NET MVC app with Glimpse
- Finereport安装
- 翻译:swift 5初始化 被忽略的Convenience便捷初始化、Required和继承
- 【Flutter 问题系列第 54 篇】Flutter 引入阿里矢量图标库的详细图文教程
- cad线加粗怎么设置_cad2016怎么把线加粗
- Linux禁用搜狗输入法的简繁切换快捷键
- 企业如何选择?网站建设中常见的几种类型
- python获取mac地址_python获取mac地址的方法
- MacBook Pro 中/英大写键盘灯不亮 解决方法
- 阿里员工调侃:花名考拉的妹子离职去了网易考拉,现在又回来了
- 电路考点之电流和电压参考方向的设定