字典
1.什么是字典
dict. 以{}表示,每一项用逗号隔开,内部元素用key:value的形式来保存数据
{'jj':'林俊杰','jay':'周杰伦'}
查询效率非常高,通过key来查找元素
内部使用key来计算一个内存地址,hash(哈希)算法. key必须是不可变的数据类型(key 必须是可hash的类型)
可哈希就是不可变 dic = {"jj":"林俊杰", "jay":"周杰伦","tz":"陶喆", 1:"哈哈", (1,2,3):"胡辣汤"} # unhashable type: 'list' 所以元组可以做key,列表 不可以
print(dic) 2.字典的增删改查
1.字典的新增:
dict[新key] = value
dict.setdefault() dic = {}
dic['徐峥'] = '人在囧途' # 直接用key往里面存数据即可
dic['黄渤'] = '疯狂的石头'
dic['黄渤'] = '摸金校尉' #如果key已经存在,那么会替换掉原来的value,修改 dic.setdefault('黄秋生','')
dic.setdefault('黄秋生','无间道') #如果存在了key,不会执行新增 print(dic)
print(dic.setdefault('黄秋生')) #none 2.删除
pop(key)
popitem() 删除任意键值对,由python内部机制指定
clear() 清空
del dict[key] dic = {"黄日华": "天龙八部", "吕颂贤": "笑傲江湖", "苏有朋": "倚天屠龙记", "六小龄童": "西游记"}
dic.pop("吕颂贤") # 指定key删除
dic.popitem() # 由python机制指定删除任意键值对
del dic["黄日华"] # 删除
dic.clear() # 清空字典
print(dic)     

dic = dict.fromkeys('abcde',111)
print(dic) # {'a': 111, 'b': 111, 'c': 111, 'd': 111, 'e': 111}
ret = dic.get('a')
print(ret)
ret2 = dic.get('g')
print(ret2) # None
ret3 = dic.get('g', '没找到')
print(ret3) # 没找到


    3.修改
dict['key'] = '修改后的内容'
update() dic = {}
dic2 = {}
dic.update(dic2) #替换和新增 dic2 替换dic1中key相同的内容,增加dic没有的内容,dic中不重合的内容不变
print(dic) dic = {"刘能": "王小利", "赵四": "刘晓光", "王木生": "范伟", "谢大脚": "于月仙", "李大国": "小鬼"}
# dic['王木生'] = "刘伟"
dic2 = {"刘能": "大阳哥", "赵四": "github", "王木生": "汪峰", "谢大脚": "冯提莫", "王大拿": "金老板"}
dic.update(dic2)
print(dic) 4.查询
1.用key直接查询 dict[key]
2.get(key,如果key不存在返回的数据)
3.setdefault() #1.执行新增流程 2.查询结果 print(dic['key']) #当key不存在,则报错 #get方法
print(dic.get('key','没查到所需信息')) #print(dic.get('key'))没有key,返回None,或返回第二项输入的内容
setdefault() 1.新增(先看看有没有key,如果有就过,如果没有,执行新增
dic = {}
dic['红'] = '红花'
v = dic.setdefault('橙', '橙光')
v2 = dic.setdefault('红', '大红花') #由于已经存在了key,所以不执行新增,直接查询结果
print(v2) # 查询
dic = {'刘能': '大阳哥', '赵四': 'github', '王木生': '汪峰', '谢大脚': '冯提莫', '李大国': '小鬼', '王大拿': '金老板'}
# 1. 最直观。 直接用key
print(dic['周杰伦']) # 当这个key不存在的时候会报错
# 2. get方法
print(dic.get("谢大脚", "周杰伦不在这里")) # 没有key. 返回None
# 3. setdefault() 1. 新增(先看有没有key, 如果有就过, 如果没有,执行新增) 2.根据key把值返回
dic = {}
dic["盖伦"] = "德玛西亚之力"
value = dic.setdefault("菲奥娜", "无双剑姬") # 新增
value2 = dic.setdefault("盖伦", "刘伟") # 由于已经存在了key。 所以新增不执行。 直接查询结果
value3 = dic.setdefault("薇恩", "坑") print(value3)
print(dic) 5.操作
1.keys()获取所有键 这个返回的不是列表,很像列表
2.values()获取所有的值
3.items()获取所有的键值对. 返回的是元组
解构,直接把元组或者列表中的数据拿出来.
a,b,c = (a1,b1,c1) 必须一一对应 6.遍历字典
    在循环字典时,不要增加或删除此字典的键值对  
for key in dict:
dict[key] for k, v in dict.items():
print(k, v) dic = {"汪峰": "大陆音乐半壁江山", "周杰伦": "亚洲音乐天王", "罗志祥": "亚洲舞王"} 对字典的遍历
print(dic.keys()) # dict_keys(['汪峰', '周杰伦', '罗志祥']) 像列表但不是列表
for key in dic.keys():
print(key) # 拿到key
print(dic[key]) # 拿到value print(dic.values())
for value in dic.values():
print(value) 也可以遍历字典
[('汪峰', '大陆音乐半壁江山'), ('周杰伦', '亚洲音乐天王'), ('罗志祥', '亚洲舞王')]
print(dic.items()) # 拿到的是key和value
for k, v in dic.items(): # 当需要遍历字典. 在操作中涉及到key和value的时候.
print(k) # 元组
print(v) 字典本身是一个可迭代对象,可以直接进行for循环
for el in dic: # 直接拿到key
print(el)
print(dic[el]) 前面的变量的个数和后面解包的个数一致
a, b = (10, 20) # 解构, 解包 可以是 10, 20 [10,20]
print(a)
print(b) 3.字典嵌套
wf = {
"name": "汪峰",
"age": 48,
"成名曲": "春天里",
"wife": {
"name": "章子怡",
"age": 39,
"工作": "演员"
},
"children":[
{"num": "001", "name": "汪一", "hobby": "唱歌"},
{"num": "002", "name": "汪二", "hobby": "演戏"} # wf['children'][1]['name']
]
} wf['wife']['age'] = wf['wife']['age'] + 10
print(wf) 4. fromkeys

  

dic = dict.fromkeys([1, 2, 3], '')
dic[1] = 2
print(dic)
print(id(dic[1]))
print(id(dic[2]))
print(id(dic[3])) '''
{1: 2, 2: '111', 3: '111'}
1410100272
2250339877304
2250339877304
'''
												

Day5--Python--字典的更多相关文章

  1. DAY5(PYTHON) 字典的增删改查和dict嵌套

    一.字典的增删改查 dic={'name':'hui','age':17,'weight':168} dict1={'height':180,'sex':'b','class':3,'age':16} ...

  2. Python字典和集合

    Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...

  3. python 字典排序 关于sort()、reversed()、sorted()

    一.Python的排序 1.reversed() 这个很好理解,reversed英文意思就是:adj. 颠倒的:相反的:(判决等)撤销的 print list(reversed(['dream','a ...

  4. python字典中的元素类型

    python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...

  5. python字典copy()方法

    python 字典的copy()方法表面看就是深copy啊,明显独立 d = {'a':1, 'b':2} c = d.copy() print('d=%s c=%s' % (d, c)) Code1 ...

  6. python 字典实现类似c的switch case

    #python 字典实现类似c的switch def print_hi(): print('hi') def print_hello(): print('hello') def print_goodb ...

  7. python字典的常用操作方法

    Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...

  8. Python 字典(Dictionary)操作详解

    Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...

  9. Python 字典(Dictionary) get()方法

    描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...

  10. Python 字典(Dictionary) setdefault()方法

    描述 Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值. 语法 setdefault()方法语法: ...

随机推荐

  1. WPF Image控件的绑定

    在我们平时的开发中会经常用到Image控件,通过设置Image控件的Source属性,我们可以加载图片,设置Image的source属性时可以使用相对路径也可以使用绝对路径,一般情况下建议使用绝对路径 ...

  2. 手把手制作一个简单的IDEA插件(环境搭建Demo篇)

    新建IDEA插件File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK 编写插件新建工 ...

  3. delphi怎样在关闭程序时弹出窗口?

    我想在关闭delphi编译的程序时,弹出“您是否确实要退出的窗口”点击否不退出,是退出 在主窗体的CloseQuery事件里,使用messagebox进行提示,根据选择的按钮对Canclose进行设置 ...

  4. vue事件綁定

    事件綁定可以是一個句子,一個函數名稱,也可以是一個函數. 事件修飾符,按鍵修飾符.

  5. Java使用RabbitMQ之公平分发

    发送消息: package org.study.workfair; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Con ...

  6. model,map,MapAndVivew用于页面跳转时候使用的即跳转后才添加属性 这样再回调中无法使用 因为回调的前提是页面不调转;解决的方法是用responsewrite(普通的字符响应)

    model,map,MapAndVivew用于页面跳转时候使用的即跳转后才添加属性 这样再回调中无法使用 因为回调的前提是页面不调转:解决的方法是用responsewrite

  7. Django通用视图APIView和视图集ViewSet的介绍和使用

    原 Django通用视图APIView和视图集ViewSet的介绍和使用 2018年10月21日 14:42:14 不睡觉假扮古尔丹 阅读数:630   1.APIView DRF框架的视图的基类是 ...

  8. BZOJ3812 主旋律(状压dp+容斥原理)

    设f[S]为S点集是SCC的方案数.考虑通过去掉不合法方案转移.可以枚举入度为0的SCC所含点集S',这样显然S^S'内部的边和由S'连向S^S'的边删还是不删任选.但是这样无法保证S'包含所有入度为 ...

  9. 洛谷P2084 进制转换

    题目背景 无 题目描述 今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 : 1*2^4+0*2^3+1*2^2+0*2^1+1*2^0, 那么请你编程实现,将一个M进制的 ...

  10. 如何判断是否为同一个App,Ionic3如何修改包名

    如何判断是否同一个App 使用Ionic3创建了两个项目demo1.demo2,然后使用同一个JDK,生成了两个不同的keystore证书. 结果在手机端安装的时候,先安装demo1,没有任何替换的提 ...