Python_字典及其操作
字典
概念
字典,Python基础数据类型之一,{}以键值对的形式存储数据。
以key : value 形式存储数据。例如,name 为 key,Laonanhai 为 value。
dic = {'name': 'Laonanhai',
'age': 45,
'name_list': ['反面教材', '俊俊', ...]
}
Python中唯一的映射类型。用以存储大量的关系型数据。
数据类型的分类
可变类
可变(不可哈希hash):list、dict、set。例如list = [11, 222, 333]
不可变(可哈希hash):str、int、tuple、bool。例如name = 'alex'
容器类
容器类的数据类型:list、dict、tuple。例如l1 = [11, True, 'alex', [22, 33, 44]]
非容器类的数据类型:int、str、bool。例如s1 = '[11, 22, 33]'
字典的key必须是不可变的数据类型,是唯一的。
hash算法
字典的键key通过hash表转换为数字,采用二分查找查询数字。
字典的value可以使任意的数据类型。
字典的查询速度非常快,可以存储大量的关系型数据。
字典在Python 3.5 包含3.5之前都是无序的,但在3.6之后是有序的。
字典的增删改查及其他操作
键唯一
当存在一样的键时后面的覆盖前边的。例如:
dic = {
'name': 'alex',
'name': 'WuSir'
}
print(dic)
键必须是不可变的可哈希的数据类型。当键为可变的不可哈希的数据类型是,输出提示错误。例如:
dic = {
'name': 'alex',
[1, 2, 3]: 'value'
}
print(dic)
增
__['A'] = B
A为键,B为值。直接增加,有则覆盖,无则添加。
无则添加。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
dic['sex'] = 'Laddy_boy'
print(dic)
有则覆盖。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
dic['name'] = 'alex'
print(dic)
__.setdefault('A','B')
A为键,B为值。有责不变,无则添加。
无则添加。
当只添加A时,对应的B值默认为None。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
dic.setdefault('sex')
print(dic)
无则添加。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
dic.setdefault('sex','Laddyboy')
print(dic)
有责不变。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
dic.setdefault('name', 'alex')
print(dic)
删
__.pop('A')
有返回值,返回的是键对应的值。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
print(dic.pop(‘age’))
print(dic)
当没有此键时,可修改默认返回值。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
print(dic.pop('age1', '没有此键...'))
print(dic)
__.clear()
清空字典。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
dic.clear()
print(dic)
__.popitem()
随机删除,有返回值,返回值为元组,里面是删除的键值对。
在Python 3.5及包含3.5之前是无序删除,Python 3.6 以后是删除字典最后一位。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
print(dic.popitem())
print(dic)
del
del __
删除整个字典。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
del dic
print(dic)
del dic['A']
按照键A删除对应的键值对。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
del dic['name']
print(dic)
改
__['A'] = 'B'
有则覆盖,没有则添加。
dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
dic['name'] = 'Alex'
print(dic)
A.update(B)
AB分别为两个字典。两个字典的更新。 将B字典的内容覆盖添加到A里面,B不变。
dic = {"name": "jin", "age": 18, "sex": "male"}
dic2 = {"name": "alex", "weight": 75}
dic2.update(dic)
print(dic)
print(dic2)
查
__['A"]
A为键。
dic = {"name": "jin", "age": 18, "sex": "male"}
print(dic['name'])
当字典中没有查找的键是,打印报错。
dic = {"name": "jin", "age": 18, "sex": "male"}
print(dic['name1'])
__.get('A')
A为键。
dic = {"name": "jin", "age": 18, "sex": "male"}
print(dic.get('name'))
当查找的键字典里没有时,默认打印输出None。例如:
dic = {"name": "jin", "age": 18, "sex": "male"}
print(dic.get('name1'))
当查找的键字典里面没有时,可将默认输出修改为自己需要的内容。例如:
dic = {"name": "jin", "age": 18, "sex": "male"}
print(dic.get('name1','SB,没有此键'))
for循环
输出键。
dic = {"name": "jin", "age": 18, "sex": "male"}
for i in dic:
print(i)
__.keys()
打印输出的内容为键,打印输出的格式为 dict_keys
dic = {"name": "jin", "age": 18, "sex": "male"}
print(dic.keys(), type(dic.keys()))
__.values()
打印输出的内容为值,打印输出的格式为dict_values。
dic = {"name": "jin", "age": 18, "sex": "male"}
print(dic.values(), type(dic.values()))
__.items()
打印输出的内容为键值对,放在元组内。打印输出的格式为dict_items
dic = {"name": "jin", "age": 18, "sex": "male"}
print(dic.items(), type(dic.items()))
for循环
将键循环打印出来。
dic = {"name": "jin", "age": 18, "sex": "male"}
for key in dic.keys():
print(key)
键转换成列表
dic = {"name": "jin", "age": 18, "sex": "male"}
l_key = list(dic.keys())
print(l_key)
for循环打印值
dic = {"name": "jin", "age": 18, "sex": "male"}
for i in dic.values():
print(i)
值转换成列表
dic = {"name": "jin", "age": 18, "sex": "male"}
l_values = list(dic.values())
print(l_values)
分别赋值
a, b = 1, 2
print(a, b)
a, b = ('alex', '34')
print(a, b)
a, b = ['alex', '34']
print(a,b)
有如下:
a = 1
b = 3
用一行代码实现a b值互换。
a = 1
b = 3
a, b = b, a
print(a, b)
for i in [22, 33, 44]:
print(i)
for i in [(11, 22), (33, 44), (55, 66)]:
print(i)
k, v = ('name', '老男孩')
print(k, v)
dic = {"name": "jin", "age": 18, "sex": "male"}
for k, v in dic.items():
print(k, v)
字典的嵌套
原始字典dic
dic = {
'name_list': ['碗蓉', '俊俊', '爽妹'],
'status': None,
'personal_msg': {
'name': '反面教材',
'age': 25,
'hobby_list': ['抽烟', '喝酒', '烫头'],
}
}
添加键值对
学校:老男孩
dic = {
'name_list': ['碗蓉', '俊俊', '爽妹'],
'status': None,
'personal_msg': {
'name': '反面教材',
'age': 25,
'hobby_list': ['抽烟', '喝酒', '烫头'],
}
}
dic['学校'] = '老男孩'
print(dic)
嵌套字典的修改
将status对应的值改为True。
dic = {
'name_list': ['碗蓉', '俊俊', '爽妹'],
'status': None,
'personal_msg': {
'name': '反面教材',
'age': 25,
'hobby_list': ['抽烟', '喝酒', '烫头'],
}
}
dic['status'] = True
print(dic)
嵌套字典元素追加
给name_list追加一个元素‘平平’。
dic = {
'name_list': ['碗蓉', '俊俊', '爽妹'],
'status': None,
'personal_msg': {
'name': '反面教材',
'age': 25,
'hobby_list': ['抽烟', '喝酒', '烫头'],
}
}
dic['name_list'].append('平平')
print(dic)
嵌套字典添加键值对
给personal_msg对应的字典添加一个键值对sex:男。
dic = {
'name_list': ['碗蓉', '俊俊', '爽妹'],
'status': None,
'personal_msg': {
'name': '反面教材',
'age': 25,
'hobby_list': ['抽烟', '喝酒', '烫头'],
}
}
dic['personal_msg']['sex'] = '男'
print(dic)
嵌套字典修改
将hobby_list对应的列表中的烫头改成唱歌。
dic = {
'name_list': ['碗蓉', '俊俊', '爽妹'],
'status': None,
'personal_msg': {
'name': '反面教材',
'age': 25,
'hobby_list': ['抽烟', '喝酒', '烫头'],
}
}
dic['personal_msg']['hobby_list'][-1] = '唱歌'
print(dic)
Python_字典及其操作的更多相关文章
- Python字典的操作与使用
字典的描述 字典是一种key-value的数据类型,使用就像我们上学用的字典,通过拼音(key)来查对应字的详细内容(value). 字典的特性 1.字典是无序的(不像列表一样有下标,它通过key来获 ...
- python-类对象以字典模式操作
#类对象以字典模式操作 class Person: def __init__(self): self.cache={} def __setitem__(self, key, value): #增加或修 ...
- Python—字典的操作
字典的操作: #字典的本质其实是dict类的对象 >>> a = dict([(")]) >>> a {'} 一.增加 >>> stud ...
- Python基础学习----字典常用操作
字典的常见操作: # 字典: # 格式:{键值对,键值对} dict_demo={"name":"bai-boy","age":17} # ...
- Dict字典的操作
字典的操作 1.字典新增键值对 已存在内容的字典新增 alient_0 = {"color":"green",position:10} alient_0[&qu ...
- swift(三)字典数组操作
//1.数组的概念和定义 var array = [,,,] var array1:Array = [,,,] var array2:Array<Int> = [,,,]; var arr ...
- python 深浅拷贝 元组 字典 集合操作
深浅拷贝 :值拷贝 :ls = [,,] res = ls 则print(res)就是[,,] 浅拷贝 :ls.copy() 深拷贝:ls3 = deepcopy(ls) # 新开辟列表空间,ls列表 ...
- Python 字典(Dictionary)操作详解
Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...
- Python字典增删操作技巧简述
Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些基础应用.比如今天我们为大家介绍的Python字典的相关操作,就是我们在学习过程中需要熟练掌握的技 ...
随机推荐
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
- org.springframework.dao.InvalidDataAccessResourceUsageException: Unexpected cursor position change. Spring Batch 错误
在用SpringBatch 跑job的时候出现这个错误, 由于取数据的DB 是netezza, 框架可能支持的不是很全面,当然也可能是其他原因. <bean id="reader_rd ...
- spring简述
1. 什么是Spring Spring:SE/EE开发的一站式框架.(有EE开发每一层的解决方案) WEB层:SpringMVC Service层:Spring的Bean管理,Spring的声明式事务 ...
- C#进阶のMEF注入
1.什么是MEF 先来看msdn上面的解释:MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库发现并使用扩展, ...
- UVA1605-Building for UN(思维)
Problem UVA1605-Building for UN Accept: 398 Submit: 2303Time Limit: 10000 mSec Problem Description ...
- [HEOI2016/TJOI2016]排序
嘟嘟嘟 首先这题的暴力是十分好写的,而且据说能得不少分. 正解写起来不难,就是不太好想. 根据做题经验,我想到了给这个序列转化成01序列,但是接下来我就不会了.还是看了题解. 因为查询只有一个数,所以 ...
- java 基础响应体定义 - 通用
package com.teewon.viewservice.entitiy.base; import java.io.Serializable; import java.util.List; pub ...
- Python:Day44 Javascript
一个完整的Javascript实现是由三个不同的部分组成: 1.核心 ECMA Javascript 2.浏览器对象模型(DOM) document object model (整合JS.html.C ...
- 联想Y7000安装显卡驱动
之前看了很多教程,一直在登陆界面循环重启!!! 多半是opengl问题!! https://blog.csdn.net/weixin_42577219/article/details/84313220 ...
- spring-boot项目的新建(出生)
了解了SSM之后,发现是真的强大,但是配置有点多,是不是啊,老铁,所以Spring-boot被我给抓住,了解了一波.[/斜眼笑] 一.Spring-boot是啥呢? 以我现在的水平,无法用花里胡哨的语 ...