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* ...
随机推荐
- SpringData JPA框架使用时出现JSON循环依赖解决方案
困扰许久的问题终于解决了,之前项目太赶,没有深入学习解决,不甘心,今天再次搭起架子试试,哈哈,终于解决! @ManyToOne(cascade={CascadeType.MERGE,CascadeTy ...
- .Net MVC TextBoxFor 扩展 placeholder 与 class 属性
namespace System.Web.Mvc { public static class HtmlHelperExtensions { public static MvcHtmlString Bs ...
- 【java】static用法
static作用: 用来修饰函数成员,成员变量和成员函数.类对象的属性都一致且能共享,比如国籍,这就能用static修饰,name不能共享,因为每个人都有自己的名字. 特有内容(name)随着对象存储 ...
- linux中telnet后退出连接窗口的方法?
linux中telnet后退出连接窗口 [root@a cron]# telnet www.baidu.com 80Trying 115.239.211.112...Connected to www. ...
- Java8-dateTimeFormatter
时间格式化LocalDate,DateTimeFormatter--->parse,ofParttern 伴随lambda表达式.streams以及一系列小优化,Java 8 推出了全新的日期时 ...
- 前端-JavaScript1-6——JavaScript之变量类型的转换
6.1 string → number 先来学习一个语句,这个语句和alert差不多,也是弹窗,弹的是输入框: 1 prompt("请输入你的电话","139&qu ...
- 寻找二叉树中的最低公共祖先结点----LCA(Lowest Common Ancestor )问题(递归)
转自 剑指Offer之 - 树中两个结点的最低公共祖先 题目: 求树中两个节点的最低公共祖先. 思路一: ——如果是二叉树,而且是二叉搜索树,那么是可以找到公共节点的. 二叉搜索树都是排序过的,位于左 ...
- linux服务之apache篇(一)
1.apache介绍:使用率最高的网站服务器: URL:统一资源定位符: 端口:http:80 https:443 2.apache三种工作模式: prefork:一个线程处理一个请求(占用内存多 ...
- 分布式之redis复习精讲
看到一片不错的精简的redis文档,转载之,便于复习梳理之用 转自:https://www.cnblogs.com/rjzheng/p/9096228.html ------------------- ...
- 网络编程 tftp下载文件的编程
一.代码 操作码 功能 1 读请求,即下载 2 写请求,即上传 3 表示数据包,即DATA 4 确认码,即ACK 5 错误 from socket import * import struct s=s ...