补充知识点1:

数据类型的划分:可变数据类型、不可变数据类型

  可变数据类型:     元组,bool,int,str      --可哈希

  不可变数据类型:  list,dict,set                --不可哈希

dict key:     必须是不可变数据类型,可哈希

dict value:可以是任意数据类型

dict优缺点:①利用效率高的二分查找法查询数据  ②可以储存大量的关系型数据  ③Python3.5版本(包括此版本)之前,字典是无序的。在Python3.6版本之后,字典按照初建字典时的顺序排列。缺点:内存消耗巨大。

    字典的常用操作方法    

1.增

  ①通过键值对添加(无key添加,有key则value覆盖)

  ②setdefault(无key添加,有key跳过;有返回值)

dic1 = {'name': '太白',  'age': 18}
# 通过键值对直接增加,有key则覆盖值
dic1['weight'] = 65
dic1['name'] = 'jin-xin'
print(dic1) # {'name': 'jin-xin', 'age': 18, 'weight': 65} dic2 = {'name': '太白', 'age': 18}
# setdefault 无key添加,有key跳过;有返回值
dic2.setdefault('height', 180)
dic2.setdefault('name', 'alex')
print(dic2) # {'name': '太白', 'age': 18, 'height': 180}
print(dic2.setdefault('name')) # 太白

2.删

  ①pop(通过key删除键值对;有返回值)

  ②popitem(删除最后一个(3.6版本之后);有返回值)

  ③lcear(清空)

  ④del(删除)

dic1 = {'name': '太白',  'age': 18, 'height': 180}
# pop 通过key删除键值对;有返回值
print(dic1.pop('name'), dic1) # 太白 {'age': 18, 'height': 180} # popitem 删除最后一个(3.6版本之后);有返回值
print(dic1.popitem(), dic1) # ('height', 180) {'age': 18} # clear 清空
dic1.clear()
print(dic1) # {} dic2 = {'name': '太白', 'age': 18, 'height': 180}
# del 删除
del dic2['name']
print(dic2) # {'age': 18, 'height': 180}
del dic2
print(dic2) # 报错

3.改

  ①通过key直接更改

  ②update

dic = {'name': '太白',  'age': 18}
# 通过key直接更改
dic['name'] = 'alex'
print(dic) # {'name': 'alex', 'age': 18} # update
dic.update(age=22, height=180)
print(dic) # {'name': 'alex', 'age': 22, 'height': 180}
dic.update([(1,'a'), (2, 'b')])
print(dic) # {'name': 'alex', 'age': 22, 'height': 180, 1: 'a', 2: 'b'} dic1 = {1: 'a', 2: 'b', 3: 'c'}
dic2 = {2: 'b', 3: 't', 4: 'd'}
dic2.update(dic1) # 字典1添加/替换到字典2中,有key覆盖value,无key添加键值对
print(dic1) # {1: 'a', 2: 'b', 3: 'c'}
print(dic2) # {2: 'b', 3: 'c', 4: 'd', 1: 'a'}

4.查

  ①通过key查询

  ②get

  ③keys   values  itmes

dic = {'name': '太白',  'age': 18}
# 通过key查询
print(dic['name']) # 太白 # get 有返回值(可设置)
print(dic.get('name')) # 太白
print(dic.get('height')) # None # keys values items
print(dic.keys()) # dict_keys(['name', 'age'])
print(dic.values()) # dict_values(['太白', 18])
print(dic.items()) # dict_items([('name', '太白'), ('age', 18)])

补充知识点2:分别赋值,也叫拆包

a = 1
b = 2
print(a, b) # 1 2
a, b = b, a
print(a, b) # 2 1 a, b = (123, 321)
print(a, b) # 123 321
a, b = ['age', 'high']
print(a, b) # age high
a, b = {'name': 'zzl', 'age': 22}
print(a, b) # name age

相关练习题:

如有下列物品:1:手机, 2:电脑, 3:鼠标垫, 4:游艇
# 创建一个用户查询程序: 1.用户输入相应序号,输出对应物品名称;如果没有则提示输入有误
# 2.用户输入列表或list展示所有:序号 物品
# 如:1 手机
# 2 电脑
# 3 鼠标垫
# ...
# 3.用户输入Q或q退出程序
dic = {1: '手机', 2: '电脑', 3: '鼠标垫', 4: '游艇'}

while 1:
uaers_in = input('请输入序号查询商品(查看商品列表请输入列表/list;输入Q/q退出):')
if uaers_in == 'list' or uaers_in == '列表':
for k, v in dic.items():
print(k, v)
elif uaers_in == 'Q' or uaers_in == 'q':
print('---程序已退出!---')
break
else:
print(dic.get(int(uaers_in), '输入有误,请重新输入'))
flag = True
while flag:
li = ["手机", "电脑", "鼠标垫", "游艇"]
for i in li:
print('{}\t\t{}'.format(li.index(i)+1,i))
num_of_chioce = input('请输入选择的商品序号/输入Q或者q退出程序:')
if num_of_chioce.isdigit():
num_of_chioce = int(num_of_chioce)
if num_of_chioce > 0 and num_of_chioce <= len(li):
print(li[num_of_chioce-1])
else:print('请输入有效数字')
elif num_of_chioce.upper() == 'Q':
break
else:
print('请输入数字')

python dict(字典)的更多相关文章

  1. [Python] dict字典的浅复制与深复制

    Python中针对dict字典有两种复制: (1)浅复制:利用 copy() 或者 dict() :复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由浅复制得到的dict会受该操作影响 ...

  2. python dict 字典

    字典是通过hash表的原理实现的,每个元素都是一个键值对,通过元素的键计算出一个唯一的哈希值,这个hash值决定了元素的地址,因此为了保证元素地址不一样,必须保证每个元素的键和对应的hash值是完全不 ...

  3. Python dict字典方法完全攻略(全)

    我们知道,Python 字典的数据类型为 dict,我们可使用 dir(dict) 来查看该类型包含哪些方法,例如: >>> dir(dict)['clear', 'copy', ' ...

  4. Python - dict 字典常见方法

    字典详解 https://www.cnblogs.com/poloyy/p/15083781.html get(key) 作用 指定键,获取对应值 两种传参 dict.get(key):键存在则返回对 ...

  5. Python - dict 字典的多种遍历方式

    前置知识 for 循环详解:https://www.cnblogs.com/poloyy/p/15087053.html 使用 for key in dict 遍历字典 可以使用 for key in ...

  6. Python - DICT 字典排序 - OrderedDict

    官方地址: https://docs.python.org/2/library/collections.html#collections.OrderedDict >>> # regu ...

  7. python dict字典和set集合用法

    创建字典:键  值  key  value c = {'张三':59, '李四':60, '王五':100} #查 print(c['张三'])  #打印张三的成绩 #改 c['张三'] = 60 # ...

  8. python dict字典添加元素

    已存在的字典进行赋值操作 可为该字典添加新元素例子:a = {‘age’: 23, ‘name’: ‘lala}a[school] = ‘nanhaizhongxue’print a>>& ...

  9. python dict字典常用操作

    字典的特性:key唯一无序 '''特性:key唯一:无序''' info = { 'stu1101': "安徽", 'stu1102': "北京", 'stu1 ...

  10. Python dict 字典 keys和values对换

    原字典: d1 = { 'en':'英语', 'cn':'中文', 'fr':'法语', 'jp':'日语' } 经过相互对换: d1_inverse = {values:keys for keys, ...

随机推荐

  1. 创建FTP访问的YUM源

    创建FTP访问的YUM源 一.安装vsftpd(步骤详见“在linux中搭建vsftpd.docx”) 在主机A上安装FTP,安装后的ftp信息如下:ftp://192.168.43.300  账号密 ...

  2. eShopOnContainers学习系列(二):数据库连接健康检查

    项目里使用数据库的时候,我们有时候需要知道数据库当前的健康状态,特别是当数据库连接不上的时候能够立马获悉.eShopOnContainers里存在着大量的服务健康.连接健康的检查,数据库连接是其中之一 ...

  3. Ng项目安装到指定盘符

    全局安装 1.node.js 2.cnpm 3.typeScript 4.ng-cli 指定安装: 1.首先在想要的盘符内新建一个名字 例: D盘中新建一个angualr的文件夹 2.在开始菜单中输入 ...

  4. Drill 学习笔记之 与Mongo性能测试比较

    性能测试: 竟然用了30秒.... 如果使用mongo 客户端只有1-2秒 感觉Drill是把数据拉过来再进行sql优化,并没有使用Mongo的API,效率低下让人失望...

  5. 1. SOFAJRaft源码分析— SOFAJRaft启动时做了什么?

    我们这次依然用上次的例子CounterServer来进行讲解: 我这里就不贴整个代码了 public static void main(final String[] args) throws IOEx ...

  6. 基于.NET环境,C#语言 实现 TCP NAT

    基于.NET平台和C#语言实现TCP NAT穿越        1.<C# WinForm 跨线程访问控件(实用简洁写法)>       2.<基于.NET环境,C#语言 实现 TC ...

  7. 设计模式----创建型型模式之单件模式(Singleton pattern)

    单件模式,又称单例模式,确保一个类只有一个实例,并提供全局访问点. 单件模式是比较简单且容易理解的一种设计模式.只有一个实例,通常的做法...TODO 类图比较简单,如下所示: 示例代码: 懒汉模式( ...

  8. Hadoop-2.7.3-本地模式安装-wordcount例子

    准备虚拟机:linux-rhel-7.4-server,由于不使用虚拟机进行联网,所以选择host-only网络模式.此处,需要再VitralBox的管理菜单中的主机网络管理器新建一个虚拟网卡.安装完 ...

  9. idea tomcat提示Unable to ping server at localhost:1099

    idea启动tomcat报错Unable to ping server at localhost:1099 是 IDEA配置的jdk版本 与 tomcat的jdk版本不配导致的

  10. python pip源安装模块的一些常见问题

    刷bugku的web时需要用python写脚本,web方面需要安装对应的模块,下面就分享一下我在安装模块时碰到的一些问题以及解决方法 首先找到pip文件所在的位置 打开cmd,cd文件位置,打开文件夹 ...