python3 字典常见用法总结
python3 字典常见用法总结
Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。
一、创建字典
字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下:
dict = {'Alice': '', 'Beth': '', 'Cecil': ''} # 也可如此创建字典 dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
注意:
每个键与值用冒号隔开(:),每对用逗号,每对用逗号分割,整体放在花括号中({})。
键必须独一无二,但值则不必。
值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。
二、访问字典里的值
把相应的键放入熟悉的方括弧,如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'] ) #以上实例输出结果: #dict['Name']: Zara
#dict['Age']: 7
如果用字典里没有的键访问数据,会输出错误如下:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print ("dict['Alice']: ", dict['Alice'] ) # 以上实例输出结果: #KeyError: 'Alice'
三、修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School']) #以上实例输出结果: #dict['Age']: 8
#dict['School']: DPS School
四、删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令,如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} del dict['Name'] # 删除键是'Name'的条目
dict.clear() # 清空词典所有条目 KeyError: 'Age'
del dict # 删除词典 TypeError: 'type' object is not subscriptable print ("dict['Age']: ", dict['Age']) # 但这会引发一个异常,因为用del后字典不再存在
五、字典键的特性
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'} print("dict['Name']: ", dict['Name']) #以上实例输出结果: #dict['Name']: Manni
2)键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行,如下实例:
dict = {['Name']: 'Zara', 'Age': 7} print("dict['Name']: ", dict['Name']) # 以上实例输出结果:
# TypeError: unhashable type: 'list'
六、字典内置函数&方法
Python字典包含了以下内置函数:
cmp(dict1, dict2) #比较两个字典元素。
len(dict) #计算字典元素个数,即键的总数。
str(dict) #输出字典可打印的字符串表示。
type(variable) #返回输入的变量类型,如果变量是字典就返回字典类型。
参考链接:https://www.cnblogs.com/scios/p/8108243.html
判断python字典中key是否存在的
一般有两种通用做法:
第一种方法:使用自带函数实现:
在python的字典的属性方法里面有一个has_key()方法:
#生成一个字典
d = {'name':Tom, 'age':10, 'Tel':110} #打印返回值
print d.has_key('name') #结果返回True
第二种方法:使用in方法:
#生成一个字典
d = {'name':Tom, 'age':10, 'Tel':110} #打印返回值,其中d.keys()是列出字典所有的key
print ‘name’ in d.keys()
print 'name' in d #两个的结果都是返回True
除了使用in还可以使用not in,判定这个key不存在,使用in要比has_key要快。
参考链接:https://blog.csdn.net/tao546377318/article/details/52160942
python字典按照value进行排序
先说几个解决的方法,具体的有时间再细说
d = {'a':1,'b':4,'c':2}
字典是这个,然后要对字典按照value进行排序
方法一:
sorted(d.items(),key = lambda x:x[1],reverse = True)
方法二:
import operator sorted(d.items(),key = operator.itemgetter(1))
方法三:
f = zip(d.values(),d.keys()) sorted(f)
//结果是 [(1, 'a'), (2, 'c'), (4, 'b')]
zip 之后,zip函数默认会对第一个元素进行排序的,如何取消排序?
参考链接:https://www.cnblogs.com/timtike/p/6562402.html
OrderedDict 有序字典以及读取json串时如何保持原有顺序
1. OrderedDict 有序字典
OrderedDict是dict的子类,它记住了内容添加的顺序。
dict本身是无序的,OrderedDict之所以能记住顺序,是将对应关系转化为元组进行存储,顺序通过列表来记录,以此实现保持原有顺序的功能
OrderedDict([(3, 'A'), (2, 'B'), (1, 'C')])
而原字典的存储形式是这样的
{1: 'C', 2: 'B', 3: 'A'}
比较时,OrderedDict要内容和顺序完全相同才会视为相等。
示例:
import collections d = collections.OrderedDict()
d[3] = 'A'
d[2] = 'B'
d[1] = 'C'
for k, v in d.items():
print(k, v)
结果是顺序(按程序读取顺序输出)
而如果d是一般的dict,则结果是逆序(输出顺序与key值有关)
2.读取json串时如何保持原有顺序
import json from collections import OrderedDict
metadata = json.loads(text, object_pairs_hook=OrderedDict);
metadata中properties的顺序是跟text中定义的顺序是一样的。
具体可以看python文档中json.loads函数中的参数。
参考链接: https://blog.csdn.net/yockie/article/details/44065885
python3 字典常见用法总结的更多相关文章
- python map 常见用法
python map 常见用法2017年02月01日 19:32:41 淇怪君 阅读数:548版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/Tifficial/art ...
- map的常见用法
map的常见用法 map 是什么? map是一组键值对的组合,通俗理解类似一种特殊的数组,a[key]=val,只不过数组元素的下标是任意一种类型,而且数组的元素的值也是任意一种类型.有点类似pyth ...
- Linux中find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- php中的curl使用入门教程和常见用法实例
摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...
- Guava中Predicate的常见用法
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
- find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- iOS 开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- iOS开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
- [转]EasyUI——常见用法总结
原文链接: EasyUI——常见用法总结 1. 使用 data-options 来初始化属性. data-options是jQuery Easyui 最近两个版本才加上的一个特殊属性.通过这个属性,我 ...
随机推荐
- SDOI2019R1游记
差点退役,真是开心 Day -2 吐了一晚上,差点死掉 被拉去医院打针,结果蛇皮的被扎了两针,真是好疼啊嘤嘤嘤 决定第二天在家里咕一天 Day -1 结果在家里也得做\(loli\)昨天的不知道从哪里 ...
- ServerSocketChannel、SocketChannel、Selector等概念04
java.nio包中的主要类ServerSocketChannel:ServerSocket的替代类,支持阻塞通信与非阻塞通信.SocketChannel:Socket的替代类,支持阻塞通信与非阻塞通 ...
- C++笔记-数组指针/二维数组转换指针
参考资料: 1. 作者 BensonLaur :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/ ...
- 记一次生产数据库"意外"重启的经历
前言 在一个阳光明媚的下午,电脑右下角传来一片片邮件提醒,同时伴随着微信钉钉的震动,打开一看,应用各种出错,天兔告警,数据库服务器内存爆红,Mysql数据库实例挂掉了. 排查 先交代一下数据库版本: ...
- Python Revisited Day 07 (文件处理)
目录 7.1 二进制数据的读与写 7.1.1 带可选压缩的Pickle 7.1.2 带可选压缩的原始二进制数据 7.2 文本文件的写入与分析 7.2.1 写入文本 7.2.2 分析文本 7.2.3 使 ...
- 前后端不分离的springboot项目问题:页面框架问题
前言:最近自己想搞一个以springboot开发的web项目,由于页面布局问题,在前期开发的时候没有太注意,每天写一点现在开发到一半出现了一个大问题. 1.先说说整个网站框架搭建问题:(整个项目前后端 ...
- Python——Flask框架——程序的结构
一.项目结构 |-flasky |-app Flask程序一般都保存在这里 |-templates/ |-static/ |main/ |-__init__.py |-errors.py |-form ...
- LODOP设置超文本不自动分页的方法
在LODOP中,超文本超过打印项高度会自动分页,自动分页有两种情况:超过设置的打印项高度,超过纸张.这里是指高度,超过纸张宽度的超文本不会显示,会隐藏掉. 如果你不了解什么是LODOP中的超文本打印项 ...
- [BZOJ 3745] [COCI 2015] Norma
Description 给定一个正整数序列 \(a_1,a_2,\cdots,a_n\),求 \[ \sum_{i=1}^n\sum_{j=i}^n(j-i+1)\min(a_i,a_{i+1},\c ...
- Redis DeskTop Manager 使用教程
redis desktop manager windows 是一款能够跨平台使用的开源性redis可视化工具. redis desktop manager主要针对redis开发设计,拥有直观强大的可视 ...