字典的定义

 # 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开发——数据类型【字典】的更多相关文章

  1. Python基础数据类型-字典(dict)

    Python基础数据类型-字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的每一篇都是Python3.x版本的哟 ...

  2. python初识数据类型(字典、集合、元组、布尔)与运算符

    目录 python数据类型(dict.tuple.set.bool) 字典 集合 元组 布尔值 用户交互与输出 获取用户输入 输出信息 格式化输出 基本运算符 算术运算符 比较运算符 逻辑运算符 赋值 ...

  3. Python开发爆破字典

    这里只是分享一下Python如何生成爆破字典 关于爆破工具编写我会在下一篇提到 其实有了爆破字典的话,直接使用Burp,Hydra等一些工具就可以做爆破了! Burp的使用在我以前的博客中有写过,至于 ...

  4. Python基本数据类型——字典

    字典 dict 字典是Python的另一种有序的可变数据结构,且可存储任意类型对象. 字典是一种键值对的数据容器,每个键值(key:value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典 ...

  5. Python开发——数据类型【字符串】

    字符串定义 字符串是一个有序的字符的集合,用于存储和表示基本的文本信息 在Python中加了引号的字符,都被认为是字符串! 单引号.双引号.多引号之间的区别? 答案:单双引号没有区别 多引号的作用? ...

  6. Python开发——数据类型【列表】

    列表的定义 中括号[]内以逗号分隔开,按照索引,存放各种数据类型,每个位置代表一个元素 list_t = ['张三','Lucy',123] print(list_t) # ['张三', 'Lucy' ...

  7. Python开发——数据类型【字符串格式化】

    字符串格式化之——% # 字符串格式化 msg = 'I am %s , My hobby is %s'%('yuan','play') print(msg) # I am yuan , My hob ...

  8. python开发笔记-字典按值排序取前n个key值

    场景举例: 假如我们有某个班级的语文成绩数据,格式为字典,其中字典key为学生姓名,value为学生成绩: 那么,如何获得单科成绩排名前3的学生姓名? 代码如下:--数据样例,方便测试 def dic ...

  9. Python开发——数据类型【数字】

    布尔型 bool型只有两个值:True 或 False 我们将bool值归类为数字,习惯上:1表示true,0表示false 整型 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2* ...

随机推荐

  1. SpringData JPA框架使用时出现JSON循环依赖解决方案

    困扰许久的问题终于解决了,之前项目太赶,没有深入学习解决,不甘心,今天再次搭起架子试试,哈哈,终于解决! @ManyToOne(cascade={CascadeType.MERGE,CascadeTy ...

  2. .Net MVC TextBoxFor 扩展 placeholder 与 class 属性

    namespace System.Web.Mvc { public static class HtmlHelperExtensions { public static MvcHtmlString Bs ...

  3. 【java】static用法

    static作用: 用来修饰函数成员,成员变量和成员函数.类对象的属性都一致且能共享,比如国籍,这就能用static修饰,name不能共享,因为每个人都有自己的名字. 特有内容(name)随着对象存储 ...

  4. linux中telnet后退出连接窗口的方法?

    linux中telnet后退出连接窗口 [root@a cron]# telnet www.baidu.com 80Trying 115.239.211.112...Connected to www. ...

  5. Java8-dateTimeFormatter

    时间格式化LocalDate,DateTimeFormatter--->parse,ofParttern 伴随lambda表达式.streams以及一系列小优化,Java 8 推出了全新的日期时 ...

  6. 前端-JavaScript1-6——JavaScript之变量类型的转换

    6.1 string → number 先来学习一个语句,这个语句和alert差不多,也是弹窗,弹的是输入框: 1    prompt("请输入你的电话","139&qu ...

  7. 寻找二叉树中的最低公共祖先结点----LCA(Lowest Common Ancestor )问题(递归)

    转自 剑指Offer之 - 树中两个结点的最低公共祖先 题目: 求树中两个节点的最低公共祖先. 思路一: ——如果是二叉树,而且是二叉搜索树,那么是可以找到公共节点的. 二叉搜索树都是排序过的,位于左 ...

  8. linux服务之apache篇(一)

    1.apache介绍:使用率最高的网站服务器: URL:统一资源定位符: 端口:http:80   https:443 2.apache三种工作模式: prefork:一个线程处理一个请求(占用内存多 ...

  9. 分布式之redis复习精讲

    看到一片不错的精简的redis文档,转载之,便于复习梳理之用 转自:https://www.cnblogs.com/rjzheng/p/9096228.html ------------------- ...

  10. 网络编程 tftp下载文件的编程

    一.代码 操作码 功能 1 读请求,即下载 2 写请求,即上传 3 表示数据包,即DATA 4 确认码,即ACK 5 错误 from socket import * import struct s=s ...