python基础:zip和dict详解
一.zip函数:接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。
1.示例1:
x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) print xyz
运行的结果是:
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
从这个结果可以看出zip函数的基本运作方式。
2.示例2:
x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print xy
运行的结果是:
[(1, 4), (2, 5), (3, 6)]
从这个结果可以看出zip函数的长度处理方式。
3.示例3:
x = [1, 2, 3]
x = zip(x)
print x
运行的结果是:
[(1,), (2,), (3,)]
从这个结果可以看出zip函数在只有一个参数时运作的方式。
4.示例4:
x = zip()
print x
运行的结果是:
[]
从这个结果可以看出zip函数在没有参数时运作的方式。
5.示例5:
x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) u = zip(*xyz) print u
运行的结果是:
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
一般认为这是一个unzip的过程,它的运行机制是这样的:
在运行zip(*xyz)之前,xyz的值是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
那么,zip(*xyz) 等价于 zip((1, 4, 7), (2, 5, 8), (3, 6, 9))
所以,运行结果是:[(1, 2, 3), (4, 5, 6), (7, 8, 9)]
注:在函数调用中使用*list/tuple的方式表示将list/tuple分开,作为位置参数传递给对应函数(前提是对应函数支持不定个数的位置参数)
6.示例6:
x = [1, 2, 3]
r = zip(* [x] * 3)
print r
运行的结果是:
[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
它的运行机制是这样的:
[x]生成一个列表的列表,它只有一个元素x
[x] * 3生成一个列表的列表,它有3个元素,[x, x, x]
zip(* [x] * 3)的意思就明确了,zip(x, x, x)
二、dict操作
1、使用zip创建字典
key = 'abcde'
value = range(1, 6)
dict(zip(key, value))
2、使用items()来遍历字典
for key,value in d.items():
3.使用get, pop来获取/删除key
首先,dict[key] 与 delete dict[key]也可以获取/删除key。但是key不存在时,会引发 KeyError 异常。为了避免引发异常可以使用带defaut参数的get和pop函数
- get(key[, default])
如果key在字典中,返回对应的value, 否则返回default。所以从来不会引发异常。 - pop(key[, default])
如果default未设置,则如果key不在字典中,删除key将引发异常。使用时加上default。
4、dict(dict1, **dict2)合并两个字典
合并两个字典可以先把两个字典分成key-value对,再连接两个key-value对,生成新的字典。即 dict(dict1.items()+dict2.items())
,不过效率有些低。
使用效率更高的 dict(dict1, **dict2)
连接两个字典。如果dict1与dict2含有相同的key,那么dict2的value会覆盖dict1
1 dict1 = {"a" : "apple", "b" : "banana"}
2 print(dict1)
3 dict2 = {"a" : "grape", "d" : "orange"}
4 print(dict(dict1,**dict2))
5 #输出
6 #{'a': 'apple', 'b': 'banana'}
7 #{'a': 'grape', 'b': 'banana', 'd': 'orange'}
5、使用keys()和values()获取关键词和值
d.keys()
d.values()
6、使用update()更新字典,与4的dict(dict1, **dict2)效果一样,如果dict1与dict2含有相同的key,那么dict2的value会覆盖dict1
1 dict1 = {"a" : "apple", "b" : "banana"}
2 print(dict1)
3 dict2 = {"c" : "grape", "d" : "orange"}
4 dict1.update(dict2)
5 print(dict1)
输出:
{'a': 'apple', 'b': 'banana'}
{'c': 'grape', 'a': 'apple', 'b': 'banana', 'd': 'orange'}
7、使用sorted排序
#按照key排序
print(sorted(dict1.items(), key=lambda d: d[0]))
#按照value排序
print(sorted(dict1.items(), key=lambda d: d[1]))
8、使用setdefault设置默认值
dict = {}
dict.setdefault("a")
9、pop()和clear()删除
1 d={"a":1,"b":2,"c":3}
2 print(d)
3 #输出
4 #{"a":1,"b":2,"c":3}
5
6 d1=d.pop("a") #d1=1
7 print(d)
8 #输出
9 #{"b":2,"c":3}
10
11 d2=d.pop("f",100) #d2=100
12 print(d)
13 #输出
14 #{"b":2,"c":3}
d.clear() #将字典d清空
print(d) #输出{}
10、使用fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
1 seq={'name','age','score'}
2 d=dict.fromkeys(seq,100)
3 print(d)
4 #输出
5 #{'name': 100, 'age': 100, 'score': 100}
11、使用popitems()随机返回并删除字典中的一对键和值(项)
1 seq={'name','age','score'}
2 d=dict.fromkeys(seq,100)
3 print(d) #输出:{'age': 100, 'name': 100, 'score': 100}
4 d2=d.popitem()
5 print(d2) #输出:('age', 100)
6 print(d) #输出:{'name': 100, 'score': 100}
python基础:zip和dict详解的更多相关文章
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
- python——Container之字典(dict)详解
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合.两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取. ...
- python基础--------字符串的调用详解(2)
Python 字符串的的调用方法~~~@@@ 17. strip : 去除字符串左右两边指定的字符 18. rstrip : 去除字符串右边指定的字符 19 . lstrip : 去除 ...
- python 基础 ------字符串的调用详解(1)
Python 字符串的的调用方法~~~ 废话不多说直接奔主题 >>>>>>>>>>>>>>>>> ...
- python基础知识(列表详解)
列表(list) 列表中可以存入整数.实数.布尔值.字符串.序列.对象 可变序列 列表 [] 元素间隔用 ,号分隔 列表的创建和删除 使用赋值运算符直接创建列表 listname = [元素1 ...
- python基础语法_闭包详解
https://www.cnblogs.com/Lin-Yi/p/7305364.html 闭包有啥用??!! 很多伙伴很糊涂,闭包有啥用啊??还这么难懂! 3.1装饰器!!!装饰器是做什么的??其 ...
- Python中dict详解
from:http://www.cnblogs.com/yangyongzhi/archive/2012/09/17/2688326.html Python中dict详解 python3.0以上,pr ...
- Python - 字典(dict) 详解 及 代码
字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...
- Python包模块化调用方式详解
Python包模块化调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一般来说,编程语言中,库.包.模块是同一种概念,是代码组织方式. Python中只有一种模块对象类型 ...
随机推荐
- ArcGIS Server浏览地图服务无响应原因分析说明
1.问题描述 从4月17号下午5时起,至18号晚9点,客户单位部分通过ArcGIS Server发布的地图服务(该部分地图服务的数据源为数据库SJZX)无法加载浏览,表现为长时间无响应.同时,通过Ar ...
- JavaScript生成一个不重复的ID
/** * 生成一个用不重复的ID */ function GenNonDuplicateID():String{ } 先看看下面的几个方法 1.生成[0,1)的随机数的Math.random,例如 ...
- 在C++中调用FFTW
FFTW是一个可以进行可变长度一维或多维DFT的开源C程序库,是目前最快的FFT算法实现. 本文简述了在Windows平台上,如何在C++中调用FFTW,所使用的IDE为Visual Studio 2 ...
- Python 监控脚本
Python 监控脚本 整体通过psutil模块动态获取资源信息.下为示例图: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time: 2019- ...
- docker 安装tomcat容器和mysql容器
1. docker pull mysql:5.6 2.docker run -p 3306:3306 --name mysql -v /data/mysql/conf:/etc/mysql/conf. ...
- mysql 中的日期格式。date_format( ) 转换格式
date_format( ) 转换格式 : 格式 描述 %a 缩写星期名 %b 缩写月名 %c 月,数值 %D 带有英文前缀的月中的天 %d 月的天,数值(00-31) %e 月的天,数值(0-31) ...
- Echarts 学习系列(3)-Echarts动态数据交互
写在前面 上一小节,我们总结了折线(面积)图.柱状(条形)图.饼(圆环)图类型的图表. 但是,都是静态的.接下来的,这一小节,总结的是Echarts 动态数据的交换. 前置条件 开发环境:win10 ...
- 【JVM】CMS垃圾回收器
一.简介 Concurrent Mark Sweep,是一种以获取最短回收停顿时间为目标的收集器,尤其重视服务的响应速度. CMS是老年代垃圾回收器,基于标记-清除算法实现.新生代默认使用ParNew ...
- jQuery事件(四)
一.基本事件函数下面事件函数中参数相关说明:eventType:事件类型,字符串'click' 'submit'多个事件类型可以通过用空格隔开[一次性绑定'click submit']eventDat ...
- Kafka消费者组静态成员(static consumer member)
Kafka 2.3发布后官网的Consumer参数中增加了一个新的参数:group.instance.id.下面是这个参数的解释: A unique identifier of the consume ...