********dict************

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

*********dict*************

数据类型的划分:

可变数据类型(不可哈希):列表(list),字典(dict),集合(set)

不可变数据类型(可哈希):元组(tuple),int,str,bool

#dict 字典数据类型 key:value

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

value:任意数据类型

dict:的优点 1,采用二分查找法查询 2,存储大量的关系类型数据

##字典是无序的,也就意味着没有索引,可采用键值对的KEY 查找!!!

1. dict的增加 #有键值对,就在后面直接添加 #有键值对,就将对应的值覆盖

#dict的增加

dic = {"name":"span","age":28,"hobby":"Programming"}print(dic)

dic["heigh"] = 188#增加 没有键值对,就在后面直接添加

dic["age"] = 33 #增加 有键值对,就将对应的值覆盖

print(dic)>>>{'name': 'span', 'age': 28, 'hobby': 'Programming'}>>>{'name': 'span', 'age': 33, 'hobby': 'Programming', 'heigh': 188}

pS: dict.setdefault(k,v) #有键值对不做任何改动,没有就添加

#dict.setdefault()的增

dic = {"name":"span","age":28,"hobby":"Programming"}

dic.setdefault("age",33) #没有就增加,有什么都不做

dic.setdefault("heigh",188)print(dic)>>>{'name': 'span', 'age': 28, 'hobby': 'Programming', 'heigh': 188}

2.dict 的删除

# dict.pop(key) PS:有返回值

#dict 的删除# dict.pop(key) PS:有返回值

dic = {"name":"span","age":28,"hobby":"Programming"}print(dic.pop("name"))print(dic)print(dic.pop("weight","没有此键")) #如果删除的字典中没有键,会报错。当传过来一个字典,不知道有没有键,但还是要删除时,用一个提示信息(可设置返回值)

>>>span>>>{'age': 28, 'hobby': 'Programming'}>>>没有此键

###dict.popitem()

#dict.popitem()

dic = {"name":"span","age":28,"hobby":"Programming"}print(dic.popitem()) #随机删除,默认删除最后一个键值对,返回值是一个元组

print(dic)>>>('hobby', 'Programming')>>>{'name': 'span', 'age': 28}

###dict.clear() 清空字典

del dict[key] #删除字典的键值对,没有键会报错,所以最好用dict.pop()

dic = {"name":"span","age":28,"hobby":"Programming"}del dic["name"]print(dic)>>>{'age': 28, 'hobby': 'Programming'}

3.###字典的更新 dic.update()

#dict.update()

dic1 = {"name":"span","age":28,"hobby":"Programming"}

dic2= {"name":"yougen","age":88,"sex":"male"}

dic2.update(dic1)print(dic1)print(dic2)>>>{'name': 'span', 'age': 28, 'hobby': 'Programming'}>>>{'name': 'span', 'age': 28, 'sex': 'male', 'hobby': 'Programming'}

将dic1 更新到dic2 ;原来的dic1不变

4.####dict.keys();dict.values();dict.items()

##dict.keys();dict.values();dict.items()

dic = {"name":"span","age":28,"hobby":"Programming"}print(dic.keys()) #返回的是列表

print(dic.values())#返回的是列表

print(dic.items())#返回的是元组

>>>dict_keys(['name', 'age', 'hobby'])>>>dict_values(['span', 28, 'Programming'])>>>dict_items([('name', 'span'), ('age', 28), ('hobby', 'Programming')])

###也可以采用for循环查找

#for循环查找

dic = {"name":"span","age":28,"hobby":"Programming"}for i in dic:#默认的是遍历key

print(i)>>>name

age

hobbyfor i indic.values():print(i)>>>span28Programming

附加内容:

#####

a,b = [1,2]print(a,b)#####

a,b = [1.2,3],[2,8]print(a,b)######

a,b =(a,b)print(a,b)>>>1 2

>>>[1.2, 3] [2, 8]>>>[1.2, 3] [2, 8]

##用dict.items()循环打印

dic = {"name":"span","age":28,"hobby":"Programming"}

for k,v indic.items():

print(k,v)

>>>name span

age 28hobby Programming

#查找某个键对应的值

dict[key] #如果没有键,报错

dict.get(key,None) #查找键对应的值,若没有这个键默认返回None,也可以自定义返回值

##dict.get(key,None)

dic = {"name":"span","age":28,"hobby":"Programming"}print(dic.get("Hight"))##没有这个键时,返回None>>>None

###dict的嵌套

##dict的嵌套

dic ={"name":["span","xiaogang","hongjie"],"06级":{"time":"2006","class":55,"addr":"WuHan"},"av_age":22}print(dic)##将av_age 改成18

dic["av_age"] = 18

print(dic)##将“name”中“hongjie”全部大写

dic["name"][2] = dic["name"][2].upper()print(dic)

##在06级的字典里增加一个新的键值对 “female”:8

dic["06级"]["female"] = 8

print(dic)

>>>{'name': ['span', 'xiaogang', 'hongjie'], '06级': {'time': '2006', 'class': 55, 'addr': 'WuHan'}, 'av_age': 18}>>>{'name': ['span', 'xiaogang', 'HONGJIE'], '06级': {'time': '2006', 'class': 55, 'addr': 'WuHan'}, 'av_age': 18}

>>>{'name': ['span', 'xiaogang', 'HONGJIE'], '06级': {'time': '2006', 'class': 55, 'addr': 'WuHan', 'female': 8}, 'av_age': 18}

###Exercise 1

##Exercise 计算输入数字的个数

info = input(">>>>>>>>")#可在后面加个strip剔除前后的空格

for i in info:#因为info是字符串,不可变数据类型

ifi.isalpha():

info= info.replace(i," ")#所以即使同名也对之前的info做不了更改

li =info.split()print(len(li))

###Exercise 2

##将一个列表里的数分类 大于88的放到k1键对应的列表里,小于88的放在另一个列表k2里

#####

li = [55,6,44,88,78,45,99,123,456,3,5]

dic={}

li_greater=[]

li_less=[]for i inli:if i ==88: continue

if i > 88:

li_greater.append(i)else:

li_less.append(i)

dic.setdefault("K1",li_greater) #或者 dic["K1"] = li_greater

dic.setdefault("K2",li_less) #或者 dic["K2"] = li_less

print(dic)>>>>{'K1': [99, 123, 456], 'K2': [55, 6, 44, 78, 45, 3, 5]}

###Exercise 3

#输出商品列表,用户输入序号。显示用户选中的商品

'''要求:1,商品列表 li = ["手机","电脑","服装","零食","手表"] 2,用户输入选择的商品序号,然后打印商品名称(如:1 手机; 2 电脑),3,如果输入的

商品序号有误,则提示输入有误,并重新输入,4,输入Q或者q退出。'''

###

flag =Truewhile flag: #定义一个标志位方便以后修改

li = ["手机","电脑","服装","零食","手表"]for i inli:print("{} {}".format(li.index(i)+1,i)) #li.index(value) 通过值找索引

num_of_goods = input("请输入选择的商品序号/输入Q或者q退出程序:")if num_of_goods.isdigit():#判断输入的是否是数字

num_of_goods =int(num_of_goods)if num_of_goods > 0 and num_of_goods <= len(li):#判断输入数字的取值范围

print(li[num_of_goods-1]) #通过索引打印列表的值

else:print("请输入有效的数字!")elif num_of_goods.upper() == "Q": break

else:print("请输入数字!")

python映射类型-Python中的映射数据类型 dict相关推荐

  1. [python教程入门学习]Python标准库映射类型与可散列数据类型的关系

    本文章向大家介绍Python标准库映射类型与可散列数据类型的关系,主要包括Python标准库映射类型与可散列数据类型的关系使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...

  2. python 鸭子类型_Python中的鸭子输入是什么?

    python 鸭子类型 Python遵循EAFP(比许可更容易请求宽恕)而不是LBYL(跨越式). EAFP的Python哲学在某种程度上与其"鸭子打字"编码风格有关. 当程序员在 ...

  3. python映射类型-Python 的映射数据类型有哪些?零基础小白入门学习必看

    1 映射类关系 Python 的 collections.abc 模块内拥有 Mapping 和 MutableMapping 这两个抽象基类,它们为 dict 和其他类似的类型提供了接口定义. mu ...

  4. python映射类型-Python中字典映射类型的学习教程

    字典是python语言中唯一的映射类型,用花括号{}表示,一个字典条目就是一个键值对,方法keys()返回字典的键列表,values()返回字典的值列表,items()返回字典的键值对列表.字典中的值 ...

  5. python映射类型-Python 映射类型字典dict操作定义

    Python映射类型字典基础知识:字典是用大括号{ }来表示,它是python中最灵活的内置数据类型.它是一个无序的集合,通过键来存取值,而不能用索引. 字典的创建和使用 字典的组成:字典是由大括号{ ...

  6. python映射类型-python映射类型的相关介绍

    映射类型是一类可迭代的键-值数据项的组合,提供了存取数据项及其键和值的方法,在python3中,支持两种无序的映射类型:内置的dict和标准库中的collections.defaultdict类型. ...

  7. python映射类型-python第二版7章笔记--映射和集合类型

    7.1 映射 字典是 Python 语言中唯一的映射类型.映射类型对象里哈希值(键) 和指向的对象(值)是一对多的关系. 它们与 Perl 中的哈希类型(译者注:又称关联数组)相似,通常被认为是可变的 ...

  8. python映射类型-python 基础学习 — 映射类型:字典

    一.字典: { } 字典是 Python 语言中唯一的映射类型.映射类型对象里哈希值(键) 和指向的对象(值)是一对多的关系. 二.创建字典 d1 = {'name': 'earth', 'port' ...

  9. python映射类型-Python基础类型之字典(dict)

    1.字典: { } 字典是 Python 语言中唯一的映射类型.映射类型对象里哈希值(键) 和指向的对象(值)是一对多的关系. 2.创建字典 d1 = {'name': 'earth', 'port' ...

最新文章

  1. Swift4 - 动态计算UITableView中tableHeaderView的高度 - 获取子控件高度和宽度
  2. Dubbo源码解析 --- DIRECTORY和ROUTER
  3. 如何让局部变量具有全局生命期
  4. MySQL 5.7 安装指南
  5. dubbo-admin构建问题总结
  6. P7736-[NOI2021]路径交点【LGV引理】
  7. Quarkus的其他(非标准)CDI功能
  8. qt绘制运动物体_手写QT贪吃蛇,小白高薪捷径-Qt开发
  9. 连载:面向对象的葵花宝典:思维、技能与实践(40) - DECORATOR模式
  10. 如何挑选PMP培训机构
  11. 【HCIE-RS 天梯路】MSDP
  12. 虚拟现实(VR)技术的升级应用|时空克隆 三维视频融合 投影融合 点卯 魔镜系列
  13. 第四章:经典量化策略集锦(第八篇:CAPM模型的应用 )
  14. 域用户如何更改计算机名,加入域后的计算机,怎么改计算机名?
  15. 计算机各种硬盘的规格,PS4硬盘基本规格和普通电脑硬盘有何区别?具体解析一览...
  16. 公司短信平台上的2万块钱,瞬间就被黑光了
  17. 如何用几何画板画绕点旋转动画
  18. word计算机桌面加密,Word文档怎么加密 保护Word文档就靠这4招
  19. 编写非递归算法实现二叉树的中序遍历
  20. C语言实现PID之应用

热门文章

  1. ROS学习手记 - 2.1: Create and Build ROS Package 生成包(Python)
  2. sscanf用法简介
  3. C#操作Excel,权限问题
  4. mybatis中useGeneratedKeys用法--插入数据库后获取主键值
  5. 徐州联赛选拔赛 - 判断能否构成树
  6. CentOS 6.5安装MongoDB 2.6(多yum数据源)
  7. SetWindowRgn注意点
  8. What is Type in managed heap?
  9. 研究生自学python好找工作么-学完Python好找工作吗?为什么有人学完找不到工作?...
  10. python基础知识思维导图-总结 Python 知识点思维导图