python入门14 字典dict

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

#coding:utf-8
#/usr/bin/python
"""
2018-11-11
dinghanhua
字典
"""

‘‘‘dict 无序的key:value组合
key要是不可变类型,如数字、字符串、元组
key不可重复,重复的会被最后一个覆盖
‘‘‘
dict_id = {‘1‘:‘python‘,‘2‘:‘java‘,‘3‘:‘javascript‘,‘4‘:‘go‘,‘2‘:‘JAVA‘}
print(dict_id)
‘‘‘查询、新增、修改、删除数据,长度len()‘‘‘
print(‘dict包含的键值对个数:‘,len(dict_id))

print(‘取值dict[key]‘,dict_id[‘1‘])#查询
print(‘取值dict.get(key,default)‘,dict_id.get(‘1‘,‘no key‘),dict_id.get(‘11‘,‘no key‘)) #存在key取value,不存在取默认值
print(‘是否存在key‘,‘2‘ in dict_id) # key in dict
#print(‘key不存在,报keyerror错误:‘,dict_id[‘6‘])

dict_id[‘2‘] = ‘java2‘ #更新数据
print(dict_id)

dict_id[‘5‘] = ‘php‘ #新增数据
print(dict_id)

del dict_id[‘5‘] #删除数据
print(dict_id)

dict_id[‘5‘] = ‘test‘
print(dict_id)
popele = dict_id.pop(‘5‘)
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,‘1‘) #第二个参数是默认的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‘: ‘1541900415‘}

# 定义一个新的字典,如果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!

原文地址:https://www.cnblogs.com/dinghanhua/p/9942821.html

时间: 2024-10-07 06:32:35

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

Python入门之字典的操作详解

这篇文章主要介绍了Python 字典(Dictionary)的详细操作方法,需要的朋友可以参考下: Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} 也可如此创建字典 dict1 = { 'abc': 456 }; dict2 = { 'abc': 1

Python序列之字典 (dict)

字典是Python语言中唯一的映射类型.字典对象是可变的,它是一个容器类型,支持异构.任意嵌套. 创建字典 语法:{key1:val1,key2:val2,.....} dict1 = {} #创建空字典 dict2 = {'n1':'liush','n2':'spirit','n3':'tester'} 字典常用操作及实例展示 可以使用dir(dict)查看字典支持的操作方法 clear 功能:清空字典所有元素 语法:D.clear() -> None.  Remove all items f

Python基础之字典dict(薄弱环节重点回顾,记不住打死自己)

字典是我Python基础里面学的最薄弱的环节,重新回顾,务必深入骨髓. Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组.布尔值也可以,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 重点就是字典的键必须是可以被哈希的,什么叫可以被哈希我说不上来,简单的说就是不可变对象. a=

Python 列表list 字典dict

# coding=utf-8 支持中文 # 列表 n1 = [1, 2, 3] print n1 print len(n1) n1.append(4) print n1 # 字典,包含键值 dic = {'tom': 11, 'sam': 57, 'lily': 100} print type(dic) print dic['tom'] dic['tom'] = 30 print dic for key in dic: print dic[key] print dic.keys() # 返回di

python基础之字典dict

不可变数据类型:tuple.bool.int.str --可哈希类型可变数据类型:list.dict.set --不可哈希类型dict-key 必须是不可变数据类型,可哈希dict-value 任意数据类型dict 优点:二分查找.存储大量的关系型数据 特点:无序的-没有索引,只能按照键值对查找增:dict[key] = value dict.setdefault(key) dict.setdefault(key ,value)删:dict.pop(key) dict.pop(key,retur

python之找字典dict中的最大/小值

dogdistance = {'dog-dog': 33, 'dog-cat': 36, 'dog-car': 41, 'dog-bird': 42} min(dogdistance, key=dogdistance.get) 返回最小值的键值: 'dog-dog' max(dogdistance, key=dogdistance.get) 返回最大值的键值: 'dog-bird' 这里key的用法为一个函数 参考: https://docs.python.org/3/library/funct

15.python 字典dict - python基础入门

前面的课程讲解了字符串str/列表list/元组tuple,还有最后一种比较重要的数据类型也需要介绍介绍,那就是python字典,俗称:dict. python中的字典可与字符串/列表/元组不同,因为字典dict需要由两部分组成,分别是key和value,简称:键值对,下面具体讲解一下关于字典的特点: 1.由一个或者多个键值对构成,键值对的类型可以不相同也可以相同: 2.字典中的键值对需要写在{}中括号内部,键值对中的key和value用:隔开,键值对与键值对之间用逗号隔开: 3.字典是一个无序

python入门(12)dict

python入门(12)dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list: names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75, 85] 给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,li

Python:enumerate函数、introspection对象自省、推导式(列表(list)推导式、字典(dict)推导式、集合(set)推导式)

枚举(enumerate)是Python内置函数.它允许我们遍历数据并?动计数,例如下面这样:for counter, value in enumerate(some_list): print(counter, value)不只如此,enumerate也接受?些可选参数,这使它更有?.例如:for counter, value in enumerate(some_list,1): # 指定从1开始计数 print(counter, value)还可以?来创建包含索引的元组列表. 1 # 指定索引