字典

概念

  字典,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_字典及其操作的更多相关文章

  1. Python字典的操作与使用

    字典的描述 字典是一种key-value的数据类型,使用就像我们上学用的字典,通过拼音(key)来查对应字的详细内容(value). 字典的特性 1.字典是无序的(不像列表一样有下标,它通过key来获 ...

  2. python-类对象以字典模式操作

    #类对象以字典模式操作 class Person: def __init__(self): self.cache={} def __setitem__(self, key, value): #增加或修 ...

  3. Python—字典的操作

    字典的操作: #字典的本质其实是dict类的对象 >>> a = dict([(")]) >>> a {'} 一.增加 >>> stud ...

  4. Python基础学习----字典常用操作

    字典的常见操作: # 字典: # 格式:{键值对,键值对} dict_demo={"name":"bai-boy","age":17} # ...

  5. Dict字典的操作

    字典的操作 1.字典新增键值对 已存在内容的字典新增 alient_0 = {"color":"green",position:10} alient_0[&qu ...

  6. swift(三)字典数组操作

    //1.数组的概念和定义 var array = [,,,] var array1:Array = [,,,] var array2:Array<Int> = [,,,]; var arr ...

  7. python 深浅拷贝 元组 字典 集合操作

    深浅拷贝 :值拷贝 :ls = [,,] res = ls 则print(res)就是[,,] 浅拷贝 :ls.copy() 深拷贝:ls3 = deepcopy(ls) # 新开辟列表空间,ls列表 ...

  8. Python 字典(Dictionary)操作详解

    Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...

  9. Python字典增删操作技巧简述

    Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些基础应用.比如今天我们为大家介绍的Python字典的相关操作,就是我们在学习过程中需要熟练掌握的技 ...

随机推荐

  1. c/c++ 线性表之双向循环链表

    c/c++ 线性表之双向循环链表 线性表之双向循环链表 不是存放在连续的内存空间,链表中的每个节点的next都指向下一个节点,每个节点的before都指向前一个节点,最后一个节点的下一个节点不是NUL ...

  2. LeetCode算法题-First Bad Version(Java实现-三种解法)

    这是悦乐书的第200次更新,第210篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第66题(顺位题号是278).您是产品经理,目前领导团队开发新产品.不幸的是,您产品的最 ...

  3. Shell and DOS

    long long ago 自己便想总结下shell命令以及dos常用的命令,毕竟实际实践中会经常用到,用的好的批处理或者shell脚本会事半功倍,好了,废话不多说,开始. shell echo [字 ...

  4. Django Form和ModelForm组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  5. python 基本运算符

    一.格式化输出 简易名片的制作 name="小龙女" phone=15464623646 firm="神雕侠侣" pro="神仙姐姐" pr ...

  6. ubuntu如何安装 adobe flash player或adobe插件

    方法/步骤 第一步当然是打开终端控制器.有很多方法,这里推荐使用快捷键:ctrl+alt+T.快捷又方便. 然后更新源列表,使用如下命令:sudo apt-get update,后面要输入密码. 下面 ...

  7. Linux之特殊符号与正则表达式

    Linux中常用的特殊符号 '' 所见即所得,吃啥吐啥 "" 特殊符号会被解析运行 `` ==== $() 先运行里面的命令 把结果留下 > 重定向符号 先清空文件的内容 然 ...

  8. 缓存数据库Memcache

    为什么用缓存数据库 MySQL:将数据存储在磁盘上,数据写入读取相对较慢 Memcached:将数据存在内存中的数据库,数据读写都快,但是数据容易丢失 数据存储,数据仓库选择MySQL这种磁盘的数据库 ...

  9. 90道Python面试题,做对80%直击年薪40w

    转发链接: 1.一行代码实现1--100之和 利用sum()函数求和 2.如何在一个函数内部修改全局变量 函数内部global声明 修改全局变量 3.列出5个python标准库 os:提供了不少与操作 ...

  10. 第5章 Java中的锁

    5.1 Lock接口 并发编程安全性需要使用到锁,synchronized是一种隐式的获得与释放锁的关键字,除此之外还有Lock接口及其实现类,该接口及实现类提供了显示获取和释放锁的方式. 除了上述编 ...