Python 基础起步 (八) 字典实用技巧大全,申精干货,必看!

Hello ,同为小白的朋友们你们好,这期主要为你们带来有关字典的一些实用技巧。上篇笔记经过感人肺腑的老白让你们认识到了字典这么有用的数据类型,这一期让咱们看看如何能更好的操做字典。编程

基础篇

下面我给你们来一个简单的字典方法汇总,诚意满满,但愿你们喜欢,若是有错误或者遗漏但愿大神能够补上~函数

建立字典,获得字典中的键值,新增,修改,删除,清空字典
stocks ={'IBM':146,            # 建立字典
         'MSFT':44,
         'MAOTAI':1000}

stocks['IBM']                  # 查询字典中的一个值  Out:146
stocks.get('MSFT')             # 查询字典中的一个值  Out:44
stocks.get('a','Not found')    # 查询字典中的一个值,若是没有,返回 Not found
stocks['a']                    # 抛出错误,由于字典中没有这个值
stocks['IBM']=200              # 修改值
stocks['APPLE']=400            # 新增键和值
stocks.update({'APPLE':900,
               'MAOTAI':0,
               'MSFT':250})    # 一次修改多个值

del stocks['APPLE']            # 删除一个值
stocks.pop['MAOTAI']           # 删除并返回删除的值
stocks.keys()                  # 得到字典的全部键
stocks.values()                # 得到字典的全部值
stocks.items()                 # 得到字典的全部键和值,形式为 (key,value)

for k,v in stocks.items():     # 遍历一个字典,输出它的键和值
    print(k,v)                          

stocks.clear()                 #清空一个字典,让字典为空
del stocks                     #直接删除一个字典

好啦,基础方法就这么多大概,这里建立了一个stocks字典用来表示股票名称和价钱,而后在基础上举例子的,有两点须要你们注意:code

  • 一次更新多个值的时候用update()方法会很方便
  • 若是利用dict[key]的方式获取一个字典中不存在的值会报错,正确作法是用get()函数,效果好不少

奇淫巧技篇

建立字典歪门邪道之一: list + zip

除了常规的方式,还有不少其余方式能够帮助咱们建立一个字典,好比咱们这里想要建立一个字典来表示一个学生的各科成绩:orm

subject=['Math','Chinese','English','Science','Art']
marks=[80,78,96,60,75]

final_result=dict(zip(subject,marks))
print(final_result.items())

Out: dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Science', 60), ('Art', 75)])

这里其实很容易看懂,咱们把subject的全部值做为key值,把marks全部值当作values的值,最后用Python很常见的zip就啪啪啪的将他们合并啦,造成了一个新的字典final_result排序

建立字典歪门邪道之二: 利用等号

上面的字典还能够经过这种形式来建立;ip

final_result= dict(Math=80,Chinese=78,English=96,Science=60,Art=75)
print(final_result.items())

Out: dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Science', 60), ('Art', 75)])
字典排序: 根据键值Key排序

仍是使用上面已经建好的字典 final_result,咱们先根据字典中的键值来排序:ci

print(sorted(final_result.items())) # 自动根据键的值从小到大或者按照A-Z排序
Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

换一种方式:get

import operator
print(sorted(final_result.items(),key=operator.itemgetter(0)))
Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

或者用lamba函数秀一波:it

print(sorted(final_result.items(),key=lambda x:x[0]))
Out:[('Art', 75), ('Chinese', 78), ('English', 96), ('Math', 80), ('Science', 60)]

不要问我为何,我也在学,可是我深知在Python编程装逼界你不用几个lamba,reduce什么的都很差意思和人打招呼,哈哈event

若是咱们想要实现根据键值倒序也很简单:

print(sorted(final_result.items(),reverse=True))
Out:[('Science', 60), ('Math', 80), ('English', 96), ('Chinese', 78), ('Art', 75)]
字典排序: 根据Value值排序

其实你们看到了根据key的排序,也猜到了如何根据value 排序:

print(sorted(final_result.items(),key=lambda x:x[1])) #根据分数排序,从低到高
Out:[('Science', 60), ('Art', 75), ('Chinese', 78), ('Math', 80), ('English', 96)]

或者换一种方式:

import operator
print(sorted(final_result.items(),key=operator.itemgetter(1)))

Out:[('Science', 60), ('Art', 75), ('Chinese', 78), ('Math', 80), ('English', 96)]

倒序也是相似:

print(sorted(final_result.items(),key=lambda kv:kv[1],reverse=True))
Out:[('English', 96), ('Math', 80), ('Chinese', 78), ('Art', 75), ('Science', 60)]

这里我在lamba后面没有写x,写了一个kv,就是告诉你们这里是什么不过重要,先这么理解就行

获取字典的子集

咱们将会一直使用上面的final_result字典来示范,这里若是咱们想要获得这个学生成绩大于70分的字典子集应该怎么作呢,很简单:

final_result= dict(Math=80,Chinese=78,English=96,Science=60,Art=75)
above_seventy ={subject:mark for subject,mark in final_result.items() if mark >70}
print(above_seventy.items())

Out:dict_items([('Math', 80), ('Chinese', 78), ('English', 96), ('Art', 75)])
交换字典中的key和value的值

这个小技巧能够这样实现:

exchange_key_value= dict(zip(final_result.values(),final_result.keys()))
print(exchange_key_value.items())

Out: dict_items([(80, 'Math'), (78, 'Chinese'), (96, 'English'), (60, 'Science'), (75, 'Art')])
获取字典最大值最小值

简直不要太简单呀:

print("The best mark is {}".format(max(final_result.values())))
print("The worst mark is {}".format(min(final_result.values())))

Out: The best mark is 96
     The worst mark is 60

总结

没啥可说的啦,写了这么多,求老铁们双击666鼓励一波!!!!完结,撒花~

相关文章
相关标签/搜索