python练习实例2--------构造数据类型
有如下数据类型
cars = ['鲁A32444', '鲁B12333', '京B8989M', '黑C49678', '黑C46555', '沪B25041', '黑C34567']
locations = {'沪': '上海', '京': '北京', '黑': '黑龙江', '鲁': '山东', '鄂': '湖北', '湘': '湖南'}
将其转化成数据类型
{'上海': 1, '北京': 1, '黑龙江': 3, '山东': 2}
思路:
1. 新建一个空字典
2. 循环列表cars,判断如果car对应的key是否在dic里面,如果在里面,按方式一处理;否则按方式二处理
根据上述思路,可以写出如下代码:
dic = dict()
for car in cars:
if locations[car[0]] not in dic: # 如果car对应的key不在dic中,就设置初始值1
dic[locations[car[0]]] = 1
else:
dic[locations[car[0]]] += 1 # 如果不在dic中,就自加1
print(dic)
上述代码还可以进行简化
dic = dict()
for car in cars:
# 找key,找到就返回值,找不到设置初始值
dic[locations[car[0]]] = dic.get(locations[car[0]], 0) + 1
print(dic)
上述代码可以抽象成一个模型:
1. 找到操作的容器,通常是要得到的某个数据类型
2. 找到要判断的元素,通常是列表的元素或字典的键
3. 找到要遍历的容器,这个容器通常是要判断元素的母体
3. 判断元素是否在容器里,如果在,执行操作一,通常是创建,设置初始值;如果不在,执行操作二,通常是根据元素对容器进行修改
这个模型可以应用在很多问题中,下面来看另外一个例子:
有如下列表
list3 = [
{"name": "Helen", "hobby": "抽烟"},
{"name": "Helen", "hobby": "喝酒"},
{"name": "Helen", "hobby": "烫头"},
{"name": "Tony", "hobby": "喊麦"},
{"name": "Tony", "hobby": "街舞"},
]
要将其转化成下面形式的列表
[{'name': 'Helen', 'hobby_list': ['抽烟', '喝酒', '烫头']}, {'name': 'Tony', 'hobby_list': ['喊麦', '街舞']}]
利用上面总结的模型,可以很容易地写出如下代码
# 1. 要操作的容器: list4
# 2. 要判断的元素:"name"
# 3. 要遍历的容器:list3
# 3. 判断"name"是否在list4里面,在,把list3的hobby添加到list4的hobby_list里面;
# 不在,在list4里创建一个字典:"name"就设置为name,创建hobby_list并添加name对应的hobby list4 = []
for i in list3:
for j in list4:
if i["name"] == j["name"]:
j["hobby_list"].append(i["hobby"])
break
else:
list4.append({"name": i["name"], "hobby_list": [i["hobby"]]})
print(list4)
这里还有一种方法:构造字典,再生成列表,不过总的思路还是上面的模型
dic = dict() # 要操作的容器: dic
for i in list3: # 要遍历的容器list3
if i["name"] not in dic: # 要判断的元素i["name"]
dic[i["name"]] = {"name": i["name"], "hobby_list": [i["hobby"]]}
else:
dic[i["name"]]["hobby_list"].append(i["hobby"])
list4 = list(dic.values())
print(list4)
好了,到这里就结束了,以后往某个容器里添加元素时如果遇到无则创建,有则改变的情况就可以运用上述模型,绝对无往不利。
python练习实例2--------构造数据类型的更多相关文章
- pcapng文件的python解析实例以及抓包补遗
为了弥补pcap文件的缺陷,让抓包文件可以容纳更多的信息,pcapng格式应运而生.关于它的介绍详见<PCAP Next Generation Dump File Format> 当前的w ...
- python基础——实例属性和类属性
python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...
- python 发送邮件实例
留言板回复作者邮件提醒 -----------2016-5-11 15:03:58-- source:python发送邮件实例
- 【原创】C++链表如何像Python List一样支持多种数据类型
用过Python的码友都知道,Python中List支持多种数据类型,如下面代码所示链表li内的数据类型可以是整数,同时也可以是字符串,当然也可以是其他数据类型. 1: >>> li ...
- Python学习笔记:02数据类型
Python 数据类型 python中标准的数据类型有 基础类型 整型(长整型) 浮点型 复数型 布尔型 序列类型 字符串 列表 元组 字典 整型 整型和长整型并不严格区分,整型int的表达范围和计算 ...
- python Cmd实例之网络爬虫应用
python Cmd实例之网络爬虫应用 标签(空格分隔): python Cmd 爬虫 废话少说,直接上代码 # encoding=utf-8 import os import multiproces ...
- Python自动化开发-变量、数据类型和运算
一.变量 变量定义:Variables are used to store infomation to referrenced and manipulated in a computer progra ...
- Python第三天 序列 数据类型 数值 字符串 列表 元组 字典
Python第三天 序列 数据类型 数值 字符串 列表 元组 字典 数据类型数值字符串列表元组字典 序列序列:字符串.列表.元组序列的两个主要特点是索引操作符和切片操作符- 索引操作符让我 ...
- python入门(8)数据类型和变量
python入门(8)数据类型和变量 数据类型 在Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样 ...
随机推荐
- 24 Zabbix系统配置日志监控告警--关键字触发
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 24 Zabbix系统配置日志监控告警--关键字触发 trapper是被监控主机主动发送数据给za ...
- 添加 [DataContract] 到 Entity Framework 6.0 POCO Template
1. 添加using System.Runtime.Serialization; 找到这行 includeCollections ? (Environment.NewLine + "usin ...
- linux deb系 rpm系 配置永久IP
rpm: 1.IP a 查看网卡名 ens256 2.uuidgen ens256 生成UUID 3./etc/sysconfig/network-scripts add ifcfg-ens256 4 ...
- [SCOI2005]王室联邦(构造)
“余”人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理. 他的国家有n个城市,编号为1..n.一些城市之间有道路相连,任意两个不同的城市之间有且仅有一 ...
- p1184高手之在一起
P1184 题目背景 高手是可以复活的,这点我们大家都知道. 题目描述 高手列出了一个详尽的日程表,这次他要追求的则是一个心灵纯洁的小萝莉.他和她都是要上课的,但是也会有时间空闲,于是高手决定无时无刻 ...
- hdu 1978 How many ways(记忆化搜索)
这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下:1.机器人一开始在棋盘的起始点并有起始点所标有的能量.2.机器人只能向右或者向下走,并 ...
- linux复制文件到一个不存在的文件夹
复制文件到一个不存在的文件夹时,会报错 cp -f aaa /home/admin/.m2/cp: 无法创建普通文件"/home/admin/.m2/": 是一个目录 解决的方式: ...
- Django cookie相关操作
Django cookie 的相关操作还是比较简单的 首先是存储cookie #定义设置cookie(储存) def save_cookie(request): #定义回应 response = Ht ...
- Python之常用模块--collections模块
认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...
- 安装原版Win8.1并激活
别问我为啥是win8.1,因为我不喜欢win10. 别问我为啥装系统,因为我新买了个硬盘. 别问我为啥写个教程,因为经历了很多坑. 第一步,用U启动做个U盘启动 http://www.uqdown.c ...