字典

字典由花括号表示{ },元素是key:value的键值对,元素之间用逗号隔开

特点:1、字典中key是不能重复的 且是不可变的数据类型,因为字典是使用hash算法来计算key的哈希值,然后用哈希值来存储键值对数据

   2、字典中元素是无序的

   3、value值可以是任意类型的数据

注:字典中的key是可hash的,可hash的数据的都是不可变的数据类型

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

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

增删改查

创建一个空字典---两种方式:

dic ={}

dic = dict()

新增(两种方式)

dic[key] = value   # 可以新增也可修改已有key的value值

dic.setdefault(key, value)   # 如果key是没有的,新增;如果key已存在   保持原值(这个方法是分两步的 在查询会细说)

删除(四种方式)

pop(key)      # 必须指定一个key 删除指定元素

popitems( )   # 随机删除一个值(字典是无序的)  但是在3.6版本里效果是删除字典最后一个元素--->原因   3.5之前字典打印输出是无序的,但在3.6之后字典打印输出是按照元素添                           加的顺序的,所以感觉用这个方法时是删除的最后一个元素,但是这个方法的源码里还是随机删除的

del dic[key]   # 删除指定元素

dic.clear()  #  清空字典

修改(两种)

dic[key] = new value    #赋一个新值

dic.update(dic2)         #将dic2更新到dic中

查询(三种)

dic[key]    #查询指定元素 key不存在时报错

dic.get(key,[xxx])    #  查询key的value    key不存在时返回xxx,如果不写xxx,默认返回None

dic.setdefault(key,[value])   # 执行逻辑  第一步,看key是否存在,key存在, 不添加也不修改value;不存在,添加key:value键值对,value没有时默认为None

第二步,返回key对应的value值

常用操作

dic.keys()  返回所有的键  返回的是一个可迭代对象,形式像列表但又不是列表

 dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}

 print(dic.keys())  #dict_keys(['意大利', '意大利2', '美国', '美国电视剧'])

 for k in dic.keys(): # 可以迭代。 拿到的是每一个key
print(k)

dic.values()  返回所有的值

dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}

print(dic.values())  #dict_values(['西西里的美丽传说', '天堂电影院', '美国往事', '越狱'])
for value in dic.values():
print(value)

dic.items()  返回所有的键值对

 dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}

 print(dic.items())  #dict_items([('意大利', '西西里的美丽传说'), ('意大利2', '天堂电影院'), ('美国', '美国往事'), ('美国电视剧', '越狱')])
for k ,v in dic.items():
print(k ,v) #遍历字典最好的方案
for k, v in dic.items(): # 拿到的是元组(key, value) 这是解包操作
print(k,v) #直接拿到key和value

字典嵌套

wf = {
"name":"汪峰",
"age":42,
"hobby":"抢头条",
"代表作":["春天里","怒放的生命","北京 北京"],
"wife_now":{
'name':"章子怡",
"age":62,
"爱好":"打麻将"
},
"children": [{'id':1,"name":"汪涵"},{"id":2,"name":"汪才子"}]
}
print(wf['wife_now']['爱好']) #打麻将
print(wf["wife_now"]["name"]) #章子怡
print(wf["children"][0]["name"]) #汪涵
# 汪峰的小儿子改名成 汪晓峰
wf['children'][1]['name'] = "汪晓峰"
print(wf)

python记录_day05 字典的更多相关文章

  1. python 实现有序字典

    python 实现有序字典 Python默认的字典,是不按顺序存储.输出我们添加在字典中的内容的,即是无序的字典.python 使用OrderedDict函数实现有序的字典. 示例: d = dict ...

  2. python入门14 字典dict

    字典dict是无序的key:value格式的数据序列 #coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 字 ...

  3. 老Python总结的字典相关知识

    字典 Python中的字典(dict)也被称为映射(mapping)或者散列(hash),是支持Python底层实现的重要数据结构. 同时,也是应用最为广泛的数据结构,内部采用hash存储,存储方式为 ...

  4. Python列表,元组,字典,序列,引用

    1.列表 # Filename: using_list.py # This is my shopping list shoplist=["apple", "mango&q ...

  5. Python基础知识---字典

    现在在实习期间,好久没用Python了,今天在做Java项目时用的HashMap让我联想到了Python中的字典,就写一些Python字典的知识吧,复习复习. 字典:  key --> valu ...

  6. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  7. python中 字符 字典 列表之间的转换

    1 字典 转 字符 定义一个字典:dict = {'name': 'python', 'age': 7}字典转字符 可以使用str强制转换 如: str(dict) 此时dict的类型就是字符型了 2 ...

  8. python集合与字典的用法

    python集合与字典的用法 集合: 1.增加  add 2.删除   •del 删除集合 •discard(常用)删除集合中的元素  #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...

  9. python之路--字典

    一. 字典 字典是以key:value的形式来保存数据的,用{}表示 字典的增删改查 字典的增加 dic = {"意大利": "李云龙", "美国&q ...

随机推荐

  1. orcl 之 导入和导出

     dmp文件导入 //1 oracle的数据模式是:用户建在表空间上,表建在用户上 //2 一个用户的表就象自己的私有财产一样,没有自己或管理员授权别的用户是不能查询或修改的: //3 对于不同用户下 ...

  2. Tengine(nginx) 搭建Tomcat集群

    好久没有更新学习的内容了,就是得强迫自己写点东西 记录自己的学习,才能更好的进步! Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和 ...

  3. 生存分析与R--转载

    生存分析与R 生存分析是将事件的结果和出现这一结果所经历的时间结合起来分析的一类统计分析方法.不仅考虑事件是否出现,而且还考虑事件出现的时间长短,因此这类方法也被称为事件时间分析(time-to-ev ...

  4. React Native组件之BackAndroid !安卓手机的物理返回键的使用

    ok!在安卓手机上,当我们用物理返回键的时候,会以一次性的将程序退出来,这样是很不好的体验,所以就需要使用RN的物理返回键组件:BackAndroid,其原理也就是 分析路由,然后pop()这样! o ...

  5. 项目Alpha冲刺——代码规范、冲刺任务与计划

    作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及可视化分析平台 这个作业的 ...

  6. 理解 Redis(8) - Ordered set 值

    ordered set 是根据 score值有序排列的数据集合. 首先还是清空数据, 并清屏, 此步骤省略~~~~ 新建一条 ordered set 数据 myset1, 并存入4个字符串, scor ...

  7. P3853 [TJOI2007]路标设置

    传送门 思路: 类似于数列分段的二分查找答案.设目前的 mid 是一个最小的“空旷指数”,那么在 sum 数组(路标数组)里每两个相邻间的路标距离一定要小于等于目前的 mid , 如果大于,那就必须使 ...

  8. 使用外网访问阿里云服务器ZooKeeper

    参考网址: zookeeper单机/集群安装详解 使用外网访问阿里云服务器ZooKeeper 阿里云服务管理控制台 1. 阿里云ECS安装zookeeper 环境:我安装的是zookeeper3.4. ...

  9. [转][JSBSim]使用VS2015编译JSBSim

    转自csdn原文:https://blog.csdn.net/yu_lei_/article/details/81463187 请大家去看原文,原文有图片和资源,本文仅供本人参考 权威参考:http: ...

  10. JNI开发-Java从C/C++获取List集合对象

    NI开发有时需要Java从C/C++获取List对象,此篇主要讲解Java从C/C++获取List<Student>返回值; 1. 定义com.niubashaoye.simple.jni ...