字典

字典由花括号表示{ },元素是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. What are the differences between Flyweight and Object Pool patterns?

    What are the differences between Flyweight and Object Pool patterns? They differ in the way they are ...

  2. 【面试问题】mybatis 与 Hibernate的不同

    Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句.mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和s ...

  3. .Net Core 本地化&全球化 实践

    介绍: 所有有关本地化的数据获取,都是从统一的一个资源文件中获取 1.创建虚拟类.资源文件,用于作为本地化数据的获取源 2.Configure localization:支持view.data ann ...

  4. Docker:Deploy your app

    Prerequisites Install Docker. Get Docker Compose as described in Part 3 prerequisites. Get Docker Ma ...

  5. 测试常用的sql语句总结

    测试中常用的sql语句,排名部分先后 1. 查询 SELECT * FROM 表名称 SELECT COUNT(DISTINCT column_name) FROM table_name 指定列的不同 ...

  6. 7、nginx的upstream及fastcgi模块应用

    ngx_http_proxy_module, ngx_http_upstream_module   ngx_http_proxy_module:实现反向代理及缓存功能 proxy_pass http: ...

  7. ZOJ 3987 Numbers(Java枚举)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3987 题意:给出一个数n,现在要将它分为m个数,这m个数相加起来必须等于n ...

  8. 前端面试题 | JS部分(附带答案)

    目前在找工作,所以各方收集了一堆面试题.其实刷面试题的过程也能更新自己对知识的认识,所以也提醒自己多看多理解.如果对下面题目有更深理解,会实时更新.遇到新题目,也会不定时更新.希望能帮助到部分朋友- ...

  9. Linux命令之nl命令

    nl 命令在 Linux 系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号,其默认的结果和 与 cat -n 有点不太一样,nl 可以将行号做比较多的显示设计,包括位数是否自动补齐 ...

  10. VC.遍历文件夹中的文件

    1.VC下遍历文件夹中的所有文件的几种方法 - 年少要轻狂 - CSDN博客.html(https://blog.csdn.net/wllmsdn/article/details/27220999) ...