欢迎光临
生活尽了力,其他靠佛系

【Python】字典Dict使用总结(重点:排序)

在Java语言中,Python的字典语言相当于Map的数据结构,也是日常开发中经常使用的键值对各式数据结构。

1.字典的创建与操作

字典最基本的创建方式是:

category = {'apple':'fruit','university':'school','football':'sport'}

字典内部是一系列的“键:值”对,一组中的键与值用“:”分隔开,不同的键值对使用“,”分割,整个字典用大括号括起来。需要注意的是:字典是无序的,当然创建字典的方式还可以使用dict()函数创建一个空的字典,也可以使用{}直接创建空的字典,也可以通过tuple,list的方式辅助创建。字典的基本操作有:查询,插入,删除,具体代码如下:

# 1.创建字典
category = {'apple':'fruit','university':'school','football':'sport'}
# 2.查询(按键查)
print(category['apple'])
# 3.插入新的键值对
category['badminton'] = 'sport'
print(category)
# 4.删除键值对
del category['apple']
print(category)
# 5.通过元组的方式创建字典
items = [('height',180),('weight',80),('name','jack'),('age',25)]
person = dict(items)
print(person)

输出结果:

fruit
{'apple': 'fruit', 'university': 'school', 'football': 'sport', 'badminton': 'sport'}
{'university': 'school', 'football': 'sport', 'badminton': 'sport'}
{'height': 180, 'weight': 80, 'name': 'jack', 'age': 25}

总结
假设我们有一字典D
– 查询:D[key]就会返回key对应的值
– 修改:D[key] = new_value 就可以修改key对应的值
– 插入:D[new_key] = new_value,需要注意的是,如果字典中有该键,则会覆盖之前的内容,你也可以理解为修改之前的值
– 删除:del D[key],删除对应key的键值对

2.字典的遍历

尽管字典是无序的,但是有时候我们需要将它按照一定的顺序打印出来,一个最简单的方法就是获取字典中所有的键值,并把它存到一个list中,然后通过一个一个键再获取对应的值。这种方法,我们还可以对键的list进行排序后再输出,也就间接地对字典进行了排序。示例如下:

category = {'apple':'fruit','university':'school','football':'sport'}
# 1. 获取键值
keys = list(category.keys())
keys.sort()     # 键值排序
print(keys)
# 2.按照顺序输出
for key in keys:
    print(category[key], end=" ")
print("")
# 2.键逆序
keys.sort(reverse=True)
print(keys)
for key in keys:
    print(category[key], end=" ")
print("")
# 3.取出所有的值
print(category.values())
# 4.同时取出键和值
print(dict1.items())

输出结果如下:

['apple', 'football', 'university']
fruit sport school 
['university', 'football', 'apple']
school sport fruit 
dict_values(['fruit', 'school', 'sport'])
dict_items([('apple', 'fruit'), ('university', 'school'), ('football', 'sport')])

3.字典排序

虽然上部分介绍了字典的排序,但是还是相对麻烦,本部分借助Python中的sorted()函数对字典进行排序。本部分内容主要参考文献1

3.1 使用sorted()排序

实例如下:

category = {'apple':'fruit','university':'school','football':'sport'}
category2 = sorted(category)
print(category2)
# 结果
# ['apple', 'football', 'university']

sorted()函数默认是给字典的键进行排序。

3.2 对键反向排序

我们继续使用sorted()函数的属性对键值进行反向排序,实例如下:

category = {'apple':'fruit','university':'school','football':'sport'}
category2 = sorted(category, reverse=True)
print(category2)
# 结果
# ['university', 'football', 'apple']

3.3 对值排序

在第2部分中已经介绍了通过.values()获取自己的值,那么我们可以进一步地对自己进行排序。实例如下:

category = {'apple':'fruit','university':'school','football':'sport'}
category2 = sorted(category.values())
print(category2)
# 结果
# ['fruit', 'school', 'sport']

同理,我们在sorted()函数中加入reverse=True的属性,那么就会进行反向排序。
重点:我们也可以使用.items()得到包含键、值得元组,然后指定key进行排序,其中使用匿名函数lambda来指定是根据键排序,还是根据值排序。示例如下:

category = {'apple':'fruit','university':'school','football':'sport'}
list1 = sorted(category.items(), key=lambda x:x[0])  # x[0]表示根据键排序,x[1]表示根据值排序
print(list1)
# 结果
# [('apple', 'fruit'), ('football', 'sport'), ('university', 'school')]

3.4 拓展:使用itemgetter函数对字典排序

其实以上得字典排序已经够了,代码示例如下:

from operator import itemgetter
d = {"a":8,"b":4,"c":12}
print(sorted(d.items(),key=itemgetter(0),reverse=True))
print(sorted(d.items(),key=itemgetter(1),reverse=True))
# 结果
# [('c', 12), ('b', 4), ('a', 8)]
# [('c', 12), ('a', 8), ('b', 4)]

这里得排序是根据选择键、值进行排序。operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些索引或键值,这里不展开探讨。

Reference

1.https://blog.csdn.net/ustbbsy/article/details/79637594

赞(0) 打赏
未经允许不得转载:AIAS编程有道 | Artificial Intelligence Algorithm Scientist » 【Python】字典Dict使用总结(重点:排序)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用,就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏