dict

dict key 必须是不可变数据类型,可哈希
value:任意数据类型

dict 优点:使用二分查询来搜索数据
存储了大量的关系型数据
特点:无序的

数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元祖,bool int str 可哈希
可变数据类型: list dict set 不可哈希

编辑一个字典:这样书写方便看清层级关系

dic = {
'name':['大猛','小孟'],
'py9':[{'num':71,'avg_age':18,},
{'num': 71, 'avg_age': 18, },
{'num': 71, 'avg_age': 18, },
],
True:1,
(1,2,3):'wuyiyi',
2:'二哥',
}
print(dic)

字典的增删改查 

dic = {'age': 18, 'name': 'ysg', 'sex': 'man',}

1)增    键值对、setdefault

dic['high'] = 180   #没有键值对 添加
print(dic) dic['age'] = 21 #有键值对 则值覆盖
print(dic) dic.setdefault("weight") #在没有值的情况下默认为 None
print(dic) dic.setdefault("weight",152) #在有值且没有重复键的情况下添加
print(dic) dic.setdefault("name","abc") #在有值且有重复键的情况下不作任何操作
print(dic)

2)删    pop、clear、del

#dic.pop('age')
print(dic.pop('age')) #有返回值 按键去删除
print(dic) print(dic.pop('hello',None)) #当删除时不确定有没有该键时,可以在后面设置返回值不认会报错 dic.clear() #清空字典
print(dic) del dict #删除字典
print(dic)

3)改    键值对、update

dic = {'age': 18, 'name': 'ysg', 'sex': 'man',}
dic2 = {'age': 22, "weight":152} dic['age'] = 21 #有键值对 则值覆盖
print(dic) dic2.update(dic)  #把 dic 追加给 dic2
print(dic)
print(dic2)

4)查  dic.keys、dic.valuse、dic.items、for 循环、get、键值对(在不存在改键时报错,不推荐使用)

dic = {'age': 18, 'name': 'ysg', 'sex': 'man'}

print(dic.keys(),type(dic.keys()))
print(dic.values(),type(dic.values()))
print(dic.items(),type(dic.items()))

for i in dic:
print(i) for i in dic.keys():
print(i) for i in dic.values():
print(i) for i in dic.items():
print(i) v = dic['name']
print(v)

#键值对
v2 = dic['name1'] #报错
print(v2)

#get
print(dic.get('name1')) #如果没有该键 可以设置返回值 print(dic.get('name1','不存在'))
dic = {'age': 18, 'name': 'ysg', 'sex': 'man'}

#如何使用 for 循环,只打印 key 与 values

for i in dic.items():
print(i) for k,v in dic.items():
print(k,v)

dict 嵌套

dic = {
'name':['alex','wusir','peipei'],
'py9':{
'time':'',
'learn_money':19800,
'addr':'CBD',
},
'age':21
} #修改 age 的值
dic['age'] = 22
print(dic) #在 dic 中的 name 中添加 'ysg'
dic['name'].append('ysg')
print(dic) #把 name 中的第二个字符修改为大写
dic['name'][1] = dic['name'][1].upper()
print(dic) #在 py9 中添加 count:5
dic['py9']["count"]=5
print(dic)

变态面试题

#怎么用一行代码实现值互换
a,b =1,2
print(a,b) a = 1
b = 2
a,b = b,a
print(a,b) #列表元组同样适用
a,b = [1,2],[3,4] #会根据最大关系自动对应
print(a,b) a,b = (1,2)
print(a,b)

day 5 - 1 字典(dict)的更多相关文章

  1. python中几个常见的黑盒子之“字典dict” 与 “集合set”

    这里说到"字典dict" 和 "集合set"类型,首先,先了解一下,对于python来说,标准散列机制是有hash函数提供的,对于调用一个__hash__方法: ...

  2. Python中的元组(tuple)、列表(list)、字典(dict)

    -------------------------------更新中-------------------------------------- 元组(tuple): 元组常用小括号表示,即:(),元 ...

  3. python中字典dict的操作

    字典可存储任意类型的对象,由键和值(key - value)组成.字典也叫关联数组或哈希表. dict = {' , 'C' : [1 , 2 , 3] } dict['A'] = 007 # 修改字 ...

  4. python中的字典(dict),列表(list),元组(tuple)

    一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...

  5. Python - 字典(dict) 详解 及 代码

    字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...

  6. Redis的字典(dict)rehash过程源代码解析

    Redis的内存存储结构是个大的字典存储,也就是我们通常说的哈希表.Redis小到能够存储几万记录的CACHE,大到能够存储几千万甚至上亿的记录(看内存而定),这充分说明Redis作为缓冲的强大.Re ...

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

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

  8. 自学Python2.4-基本数据类型-字典dict(objct)

    Python dict方法总结 一.字典介绍 1.字典概述 ①字典是python中唯一内建的映射类型.又称关联数组或散列②映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关 ...

  9. Python字典(dict)使用技巧

    字典dict是Python中使用频率非常高的数据结构,关于它的使用,也有许多的小技巧,掌握这些小技巧会让你高效地的使用dict,也会让你的代码更简洁. 1.默认值 假设name_for_userid存 ...

  10. python基础2--数据结构(列表List、元组Tuple、字典Dict)

    1.Print函数中文编码问题 print中的编码:# -*- coding: utf-8 -*- 注:此处的#代表的是配置信息 print中的换行符,与C语言相同,为"\n" 2 ...

随机推荐

  1. CF954F Runner's Problem(DP+矩阵快速幂优化)

    这题是一年前某场我参加过的Education Round codeforces的F题,当时我显然是不会的. 现在看看感觉应该是能做出的. 不扯了写题解: 考虑朴素的DP,在不存在障碍的情况下:f[i] ...

  2. Fiddler 只取所需

    Fiddler每次打开的时候都会打开十多个会话,期望只想抓取自己想要的请求.   1)User Filters:启用过滤器 2)在Filers面板中勾选“Use Filters”,并在Hosts区域, ...

  3. Linux常用基本命令(less)

    转: Linux常用基本命令(less) LESS:跟more命令的功能类似,都是用于分页显示内容,但是他的性能比more更高,功能比more更丰富,他读取文件是按需加载 格式: less [opti ...

  4. STL学习笔记:空间配置器allocator

    allocator必要接口: allocator::value_type allocator::pointer allocator::const_pointer allocator::referenc ...

  5. C++基础知识--DAY4

    今天主要讲的是类中除了构造器析构器以外的拷贝构造器,运算符重载等问题 首先是拷贝构造器 1. copy constructor(拷贝构造) 其也是构造器,其地位和constructor的地位是一样的 ...

  6. appium 切换native/ webview,findby,还有页面元素定位一直小于0的问题的解决

    之前一直有个bug没有解决. 今天,终于解决了. 疑问过程: app是混合应用,项目做了H5优化之后,以前的用例执行总会失败,体现在原来的一个元素点击无反馈 排查原因:1.项目做了H5优化,2.测试的 ...

  7. Python加载声音

    对于音频的操作可以使用pygame包中的sound 和 music对象进行音乐播放. Sound对象适合处理较短的音乐,如OGG和WAV格式的音频文件. Music对象出来可以播放OGG.WAV音频外 ...

  8. php解析文本文件呈现在表格上

    name.txt如下 1 | 朱芳 | 18 | b.unyrl@tpwpqt.st | http://XEP.VC 2 | 康丽 | 22 | e.ifmc@fyvutpzio.pro | http ...

  9. Mac iOS Mac Watch 应用和游戏编程开发工具推荐

    今日分享「iOS / Mac / Watch 应用和游戏开发工具」推荐,这期专题主要为iOS开发者推荐一些优秀的设计和开发工具,这些工具包含移动原型的设计.程序的开发等,可以大大提高开发的效率!专题会 ...

  10. 测试一下多线程同时往list中添加元素会不会出问题

    # encoding: utf-8 import decimal import requests import logging import logging.config import random ...