Python开发——数据类型【字典】
字典的定义
# Python语言中唯一的类型映射
# 键与值之间用“:”分开
# 项与项之间用“,”分开
person = {"name":"yuan","age":18}
print(person) # {'name': 'yuan', 'age': 18} person = dict(name='yuan',age=18)
print(person) # {'name': 'yuan', 'age': 18} person = dict({"name":"yuan","age":18})
print(person) # {'name': 'yuan', 'age': 18}
字典的特性
# key-value结构
# key必须可hash、且必须为不可变数据类型、必须唯一
# 可存放任意多个值、可修改、可以不唯一
# 无序
字典的内置函数
长度、循环
# 字典
dic = {
"k1":"v1",
"k2":"v2"
}
# 长度
print(len(dic)) # # 返回一个包含字典所有key的列表
k = dic.keys()
print(k) # dict_keys(['k1', 'k2'])
# 返回一个包含字典所有value的列表
v = dic.values()
print(v) # dict_values(['v1', 'v2'])
# 返回一个包含字典所有(键,值)元祖的列表
i = dic.items()
print(i) # dict_items([('k1', 'v1'), ('k2', 'v2')])
# 循环
for k in dic.keys():
print(k)
for k,v in dic.items():
print(k)
print(v)
for k in dic:
print(k)
清空、复制、创建
# 清空
dic.clear()
print(dic) # {}
dic = {
"k1":"v1",
"k2":"v2"
}
# 复制
dic2 = dic.copy()
print(dic2) # {'k1': 'v1', 'k2': 'v2'}
# 根据序列,【创建字典】,并指定统一的值
dic2 = {}.fromkeys(["k1",56,""],123)
print(dic2) # {'k1': 123, 56: 123, '999': 123}
查看
# 字典
dic = {
"k1":"v1",
"k2":"v2"
}
# 根据key,获取字典中对应的值
# 若key不存在字典中,则报错
v = dic['k1']
print(v) # v1
# 根据key,获取字典中对应的值
# 若key不存在字典中,则返回default的值
# dict.get(key,default = None)
v = dic.get("k1")
print(v) # v1
删除
# 字典
dic = {
"k1":"v1",
"k2":"v2",
"k4":"v4"
}
# 指定某一个key删除,并打印删除的元素
v = dic.pop("k1")
print(dic) # {'k2': 'v2', 'k4': 'v4'}
print(v) # v1
# 随机删除
k,v = dic.popitem()
print(dic) # {'k2': 'v2'}
print(k,v) # k4 v4
新增、修改
# 字典新增、修改
dic = {
"k1":"v1",
"k2":"v2"
}
# 若key在字典中不存在,则新增
# 若key在字典中存在,则更新
dic['kn'] = 'vn'
print(dic) # {'k1': 'v1', 'k2': 'v2', 'kn': 'vn'}
# 设置值,若key在字典中不存在,新增
# 若key在字典中存在,返回原来的值,
v = dic.setdefault("k3","")
print(v) #
print(dic) # {'k1': 'v1', 'k2': 'v2', 'kn': 'vn', 'k3': '123'} # dic.dic2将字典dic2的键值对添加到字典dic中
dic.update({"k2":""})
print(dic) # {'k1': 'v1', 'k2': '3546', 'kn': 'vn', 'k3': '123'}
dic.update(k2="",k5 = 345)
print(dic) # {'k1': 'v1', 'k2': '789', 'kn': 'vn', 'k3': '123', 'k5': 345}
例题:三级菜单
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
# 字典
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{}
},
'上地':{
'百度':{}
}
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{}
},
'天通苑':{},
'回龙观':{}
},
'朝阳':{},
'东城':{}
},
'上海':{
'闵行':{
'人民广场':{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{}
},
'山东':{}
} # 列表
list = []
# 输入字母“q”为返回上一层,
# 输入字母“b”为退出
while len(list) < 4:
# 输出
lLength = len(list)
if lLength ==0:
iItem = menu
elif lLength == 1:
iItem = menu[list[0]]
elif lLength == 2:
iItem = menu[list[0]][list[1]]
elif lLength == 3:
iItem = menu[list[0]][list[1]][list[2]]
list_k = [] # 列表,用于存储,显示关键字
for k in iItem:
list_k.append(k)
# 判断子地区列表是否为空---开始
if len(list_k) == 0:
print("当前地区下,已无子地区可选")
break
else:
print(list_k)
dq = input("请输入要选择的地区:")
# 对输入内容进行判断---开始
if dq == 'q':
list.pop()
elif dq == 'b':
print("您已退出!")
break
elif dq in list_k:
list.append(dq)
else:
print("输入地区有误!")
break
# 对输入内容进行判断---结束
# 判断子地区列表是否为空---结束
else:
print("当前已无地区可选!")
print("---The end---")
Python开发——数据类型【字典】的更多相关文章
- Python基础数据类型-字典(dict)
Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...
- python初识数据类型(字典、集合、元组、布尔)与运算符
目录 python数据类型(dict.tuple.set.bool) 字典 集合 元组 布尔值 用户交互与输出 获取用户输入 输出信息 格式化输出 基本运算符 算术运算符 比较运算符 逻辑运算符 赋值 ...
- Python开发爆破字典
这里只是分享一下Python如何生成爆破字典 关于爆破工具编写我会在下一篇提到 其实有了爆破字典的话,直接使用Burp,Hydra等一些工具就可以做爆破了! Burp的使用在我以前的博客中有写过,至于 ...
- Python基本数据类型——字典
字典 dict 字典是Python的另一种有序的可变数据结构,且可存储任意类型对象. 字典是一种键值对的数据容器,每个键值(key:value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典 ...
- Python开发——数据类型【字符串】
字符串定义 字符串是一个有序的字符的集合,用于存储和表示基本的文本信息 在Python中加了引号的字符,都被认为是字符串! 单引号.双引号.多引号之间的区别? 答案:单双引号没有区别 多引号的作用? ...
- Python开发——数据类型【列表】
列表的定义 中括号[]内以逗号分隔开,按照索引,存放各种数据类型,每个位置代表一个元素 list_t = ['张三','Lucy',123] print(list_t) # ['张三', 'Lucy' ...
- Python开发——数据类型【字符串格式化】
字符串格式化之——% # 字符串格式化 msg = 'I am %s , My hobby is %s'%('yuan','play') print(msg) # I am yuan , My hob ...
- python开发笔记-字典按值排序取前n个key值
场景举例: 假如我们有某个班级的语文成绩数据,格式为字典,其中字典key为学生姓名,value为学生成绩: 那么,如何获得单科成绩排名前3的学生姓名? 代码如下:--数据样例,方便测试 def dic ...
- Python开发——数据类型【数字】
布尔型 bool型只有两个值:True 或 False 我们将bool值归类为数字,习惯上:1表示true,0表示false 整型 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2* ...
随机推荐
- redis 双写一致性 看一篇成高手系列1
首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用.在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作. 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存.又或者 ...
- Delphi LiveBinds组件
Component Logo Component Name Description TBindSourceDB Is used for creating bindings to databases. ...
- 5、在Dreamweaver cc 2017中添加服务器扩展组件
Adobe DW CC 2015对HTML5.CSS3.jQuery.jQuery UI都有很好的支持,无奈这个版本却未提供开发动态网站所需要的服务器行为面板.数据库面板以及绑定面板等.要添加这个面板 ...
- MySQL 5.7临时表空间
MySQL 5.7起,开始采用独立的临时表空间(和独立的undo表空间不是一回事哟),命名ibtmp1文件,初始化12M,且默认无上限. 选项 innodb_temp_data_file_path 可 ...
- js源生ajax
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Scrapy学习篇(十一)之设置随机User-Agent
大多数情况下,网站都会根据我们的请求头信息来区分你是不是一个爬虫程序,如果一旦识别出这是一个爬虫程序,很容易就会拒绝我们的请求,因此我们需要给我们的爬虫手动添加请求头信息,来模拟浏览器的行为,但是当我 ...
- mmap映射区和shm共享内存的区别总结
[转载]原文链接:https://blog.csdn.net/hj605635529/article/details/73163513 linux中的两种共享内存.一种是我们的IPC通信System ...
- Python第一天:python2.x和python3.x的区别
查看Python版本 # python -V Python2.7.5是centos7中默认安装的Python [root@localhost ~]# python -V Python [root@lo ...
- [ExcelHome]15个常用的Excel函数公式,拿来即用
微软最有价值专家(MVP)祝洪忠分享15个模式化的表格公式,大家有类似问题可以直接套用. 首先声明,我这个可称不上是什么公式大全,就是给各位新人朋友们入门学习的,高手请按返回键. 1.查找重复内容 = ...
- wepy打开页面首次不显示,但是数据已经有了
page页面首次打开异步数据无法通过props传递到子组件 解决:在开发者工具关闭上传代码时自动压缩就解决了,在wepy文档里也有强调