字典dict是无序的key:value格式的数据序列

#coding:utf-8
#/usr/bin/python
"""
2018-11-11
dinghanhua
字典
""" '''dict 无序的key:value组合
key要是不可变类型,如数字、字符串、元组
key不可重复,重复的会被最后一个覆盖
'''
dict_id = {'':'python','':'java','':'javascript','':'go','':'JAVA'}
print(dict_id)
'''查询、新增、修改、删除数据,长度len()'''
print('dict包含的键值对个数:',len(dict_id)) print('取值dict[key]',dict_id[''])#查询
print('取值dict.get(key,default)',dict_id.get('','no key'),dict_id.get('','no key')) #存在key取value,不存在取默认值
print('是否存在key','' in dict_id) # key in dict
#print('key不存在,报keyerror错误:',dict_id['6']) dict_id[''] = 'java2' #更新数据
print(dict_id) dict_id[''] = 'php' #新增数据
print(dict_id) del dict_id[''] #删除数据
print(dict_id) dict_id[''] = 'test'
print(dict_id)
popele = dict_id.pop('')
print('popele=%s,dict is %s'%(popele,dict_id))
'''查看所有的key,value'''
for k in dict_id:
print(k,end=' ')
print(dict_id[k]) #只取keys
print(dict_id.keys())
#只取values
print(dict_id.values())
#取key,value
print(dict_id.items())
for k,v in dict_id.items():
print(k,v)
'''用序列list、tuple、set生成dict的key'''
li = ['dog','cat','dinosaur']
dict_li = {}
dict_li = dict_li.fromkeys(li)
print(dict_li) ss = {'dog','cat','pig'}
dict_li2 = dict_li.fromkeys(ss,'') #第二个参数是默认的value值
print(dict_li2) '''dict合并'''
dict_li.update(dict_li2) # dict2的添加到dict1中
print(dict_li)
'''排序 sorted'''
print('排序:',sorted(dict_id)) #默认按键排序
li = sorted(dict_id.values()) #values排序
print(li) li = sorted(dict_id.items()) #key,value默认按key排序
print(li) li = sorted(dict_id.items(),key=lambda item:item[1]) #按value排序
print(li)
'''练习:将cookie字符串改成dict'''
cookie = '_ga=GA1.2.1595072447.1537137596; _gid=GA1.2.1806558744.1541837860; ' \
'Hm_lvt_3eec0b7da6548cf07db3bc477ea905ee=1541250960,1541292056,1541837859,1541861084; ' \
'Hm_lpvt_3eec0b7da6548cf07db3bc477ea905ee=1541900415'
dict_cookie = {}
cookies = cookie.split(';')
for c in cookies:
cl = c.split('=')
dict_cookie[cl[0]] = cl[1]
print(dict_cookie)
'''练习:测试报告字符串格式化'''
template = """
<html>
<head>
<title>%(title)s</title>
</head>
<body>
<h1>%(head)s</h1>
<p>%(para1)s</p>
</body>
</html>
"""
dict_report = {'title':'testreport','head':'xx项目测试报告','para1':'该测试报告包含以下几部分。。。'}
print(template%dict_report)
'''练习:去除dict的value重复项,保留其中一个'''
cookie = {'_ga': 'GA1.2.1595072447.1537137596', ' _gid': 'GA1.2.1806558744.1541837860', ' Hm_lvt_3eec0b7da6548cf07db3bc477ea905ee': '1541250960,1541292056,1541837859,1541861084', ' _gid2': 'GA1.2.1806558744.1541837860', ' Hm_lpvt_3eec0b7da6548cf07db3bc477ea905ee': ''} # 定义一个新的字典,如果value不在新的dict.values里,则插入
dict_new = {}
for key,value in cookie.items():
if value not in dict_new.values():
dict_new[key] = value
print('替换后:',dict_new) #利用dict的key自动去重
dict_new2 = {}
for key,value in cookie.items():
dict_new2[value] = key
print('key和value对调之后已去重',dict_new2)
for key,value in dict_new2.items():
dict_new2[value] = key
dict_new2.pop(key)
print('再恢复key value对应关系',dict_new2) # 取所有的values值,个数大于1,则删除
dict_new = cookie.copy()
for key,value in cookie.items():
if list(dict_new.values()).count(value) >1:
del dict_new[key]
print(dict_new)
'''dict记录了成绩,计算平均分,最高分等'''
#只记录了一科成绩,算平均分,最高分的人
dic_data = {'aaa':70,'bbb':95,'ccc':95,'ddd':85} li_score = dic_data.values()
print('平均分:',sum(li_score)/len(li_score)) #平均分 maxscore = max(dic_data.values()) #最高分
for key,value in dic_data.items():
if value == maxscore:
print('No1 is %s'%key) #按分数排序,取第一个人名和最高分,不适合第一名有多个的
print(sorted(dic_data.items(),key = lambda x:x[1],reverse=True)[0]) #记录了3个科目的成绩,计算每个人的平均分,找到均分不及格的人;每个科目的平均分和最高分,每科的第一名
dic_data = {'aaa':[60,60,50],'bbb':[90,60,80],'ccc':[90,95,98],'ddd':[88,85,97]}
#计算每个人的平均分,value的平均分
for key,value in dic_data.items():
avg = sum(value)/len(value)
print('%s 的平均分是 %.2f'%(key,avg))
if avg < 60:
print('均分不及格') #计算各科的平均分和最高分 取value[i]的均分和最高
avglist = []
maxlist = []
lendic = len(dic_data)
for i in range(0,3):
li_score = [ value[i] for value in dic_data.values()] #取出每个科目的所有人的成绩列表
avglist.append(sum(li_score)/lendic) #平均分
maxlist.append(max(li_score)) #最高分
print('各科目平均分:',avglist)
print('各科目最高分:',maxlist)
print(list(zip(['语文','数学','英语'],avglist,maxlist))) #找最高分的学生
for key,value in dic_data.items():
for i in range(0,3):
if value[i] == maxlist[i]:
print('第%s个科目的最高分学生%s'%(i+1,key)) #排序
for i in range(0,3):
print(sorted(dic_data.items(),key = lambda x:x[1][i],reverse=True)) #各科目成绩倒序排
'''计算每个人的平均分; 科目的均分和最高分,及拿到最高分的人'''
dic_data = {'aaa':{'语文': 60, '数学': 60, '英语': 50},
'bbb':{'语文': 90, '数学': 60, '英语': 80},
'ccc':{'语文': 90, '数学': 95, '英语': 98},
'ddd':{'语文': 88, '数学': 85, '英语': 97}} #每个人的平均分
for key,value in dic_data.items():
avgscore = sum(value.values())/len(value.values()) #平均分
print('%s的平均分是%.2f'%(key,avgscore))
if avgscore < 60:
print('均分不及格') #科目最高分,均分
dict_course = {'语文':None,'数学':None,'英语':None}
for key in dict_course:
li_score = [ value[key] for value in dic_data.values()]
print(key,li_score)
print('%s平均分:%.2f'%(key,sum(li_score)/len(li_score)))
print('%s最大值:%.2f'%(key,max(li_score)))
#得分最高的
for name,score in dic_data.items():
if score[key] == max(li_score):
print('科目%s得分最高的是%s'%(key,name))

the end!

python入门14 字典dict的更多相关文章

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

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

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

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

  3. Python入门之字典的操作详解

    这篇文章主要介绍了Python 字典(Dictionary)的详细操作方法,需要的朋友可以参考下: Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一 ...

  4. python基础类型(字典:dict)

    字典的介绍: 字典(dict)Python中唯一的一个映射类型.他是以{}括起来的键值对组成,在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址,然后将key-value保存到这 ...

  5. python 浅谈字典dict

    一.字典简介 字典(dict)是python中唯一的映射类型,他是以{ }括起来的键值对组成,在dict中的key是唯一的.在保存的时候,根据key来计算出一个内存地址.然后将key-value保存在 ...

  6. Python内置字典;dict ,set

    dict and set dict:  键-值 /重复添加 set :  键 / key不能重复 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容.相反,这些方法会创建新的对象并返 ...

  7. python——Container之字典(dict)详解

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

  8. Python 列表list 字典dict

    # coding=utf-8 支持中文 # 列表 n1 = [1, 2, 3] print n1 print len(n1) n1.append(4) print n1 # 字典,包含键值 dic = ...

  9. python入门之字典

    1.字典的基本特征: key-value结构 key唯一,必须为不可变数据类型 value可以不唯一 无序 查找速度快 2.创建一个字典: info={“gaohui”:"IT", ...

随机推荐

  1. poj1862

    一.题意:两个物体m1.m2相撞后会变成一个物体,这个物体的重量会变成2*sqrt(m1*m2).有n个物体,假设只会发生两两相撞,求最后剩下的最小重量. 二.思路:简单的贪心.越大的数开越多的次方, ...

  2. PIE SDK图层树右键菜单与命令绑定

    1.   功能简介 上一节已经介绍过图层树如何和地图和制图关联,图层树右键菜单主要是基于TocControl控件进行对菜单节点进行控制,TocControl主要作用是显示当前加载的图层有哪些.采用什么 ...

  3. 2019.03.26 读书笔记 关于for与foreach

    for 是索引器,foreach是迭代器 foreach在movenext()中增加了对集合版本(一个整数,每次对集合修改都+1)的验证,另外反编译后的效果是使用了using(是try finally ...

  4. NodeJS 实现阿里云推送。

    虽然阿里云推送也有 NodeJS SDK ,只要在项目中引用 aliyun-sdk 就可以使用了.里面的推送功能了. 我在这里就不写怎么使用aliyun-sdk.给出来的DEMO是回调形式的.用起来有 ...

  5. Ubuntu Server 14 配置

    语言 在虚拟机中安装了Ubuntu Server. Ubuntu Server只有控制台,没有图形界面.要在控制台下安装中文支持很麻烦.所以直接设置为英文,反正我看得懂. 在安装的时候必须将" ...

  6. 微信小程序开发踩坑记录

    1.由于小程序wx.request()方法是异步的,在app.js执行ajax后,各分页加载app.js的全局数据时,无法按顺序加载.例: //app.js App({ ajax:function() ...

  7. Java Socket通信示例

    Socket分为ServerSocket和Socket两大类: 其中ServerSocket用于服务器端,可以通过accept方法监听请求,监听到请求后返回Socket: Socket用户具体完成数据 ...

  8. django中自定义表名及字段名称

    在meta 类中指定表名,在字段中通过db_column指定列名如下所示 class Record(models.Model): content=models.CharField(max_length ...

  9. c#.net常见字符串处理方法

    1.字符串比较 字符串.ComparTo(目标字符串) "a".ComparTo("b"); 2.查找子串 字符串.IndexOf(子串,查找其实位置) ; 字 ...

  10. MyEclipse 中tomcat 调试时进入未打断点的代码

    在preferences里面取消挂起未捕获异常