python实现有序遍历dict(字典)

 更新时间:2023年08月21日 09:12:48   作者:yealxxy  
这篇文章主要介绍了python实现有序遍历dict(字典),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python有序遍历dict(字典)

大家都知道dict是无序的,这篇文章介绍dict的有序遍历。这里我们主要用到一个python的方法sorted()。

一、sorted()方法介绍

内建函数sorted方法,可以对所有可迭代的对象进行排序操作

1.方法-sorted(iterable, key=None, reverse=False):

  • iterable,可以看到其中第一个参数是可迭代对象;
  • key,主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序;
  • reverse,是否反转,默认情况下不反转;

2.sorted()的理解,对list的排序为例:

def test_sorted():
    L = [('b', 2), ('a', 1), ('c', 3), ('d', 0)]
    print(sorted(L,key=lambda x:x[0])) # 用第一项排序
    print(sorted(L,key=lambda x:x[1])) # 用第二项排序
test_sorted()
输出:
[('a', 1), ('b', 2), ('c', 3), ('d', 0)]
[('d', 0), ('a', 1), ('b', 2), ('c', 3)]

二、dict按key有序遍历

def sort_by_key(dic):
    for key in sorted(dic):
        print(key,dic[key])
dic = {1:2,4:2,6:1,0:5}
sort_by_key(dic)
输出:
0 5
1 2
4 2
6 1

三、dict按value有序遍历

def sort_by_value(dic):
    for key,value in sorted(dic.items(),key=lambda x:x[1]):
        print(key,value)
dic = {1:2,4:2,6:1,0:5}
sort_by_value(dic)
输出:
6 1
1 2
4 2
0 5

python的dict用法

一、dict

python中的dict(字典)就是来保存这种映射,在dict中每一个key和value 是一一对应的。

【E1】新来同学Gaven成绩86,编写一个dict,把新同学成绩添加进去。

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
d ['Gaven'] =86
print(d)
#{'Alice': 45, 'Candy': 75, 'David': 86, 'Ellena': 49, 'Gaven': 86, 'Bob': 60}

二、读取dict 元素

创建一个dict ,dict 通过key找到对应的value的功能。还可以通过key来获取对应的value,dict提供get方法,把key当作参数传递给get方法。当Key不存在时也不会出错。

【E2】根据如下dict,打印出Alice, Bob, Candy, Mimi, David的成绩,当同学不存在时,打印None。

d ={
    'Alice':45,
    'Bob':60,
    'Candy':75,
    'David':86,
    'Ellena':49,
    'Gaven':86
}
print(d['Alice'])
print(d['Bob'])
print(d['Candy'])
print(d['David'])
print(d['Ellena'])
print(d['Gaven'])
print(d.get('Dodo'))

三、添加dict元素

dict和tuple不一样,dict是可变的,我们随时可以往dict中添加新的key-value,value可以是任意类型的元素,可以是list、tuple等,

【E3】Alice、Bob、Candy的最近三次的成绩分别是[50, 61, 66],[80, 61, 66],[88, 75, 90],请更新dict,使得dict可以保存同学多次的成绩。

d = {
    'Alice': [45],
    'Bob': [60],
    'Candy': [75],
}
d['Alice'] =[50,61,66]
d['Bob'] =[80,61,66]
d['Candy'] =[88,75,90]
print(d)
#{'Bob': [80, 61, 66], 'Alice': [50, 61, 66], 'Candy': [88, 75, 90]}

赋值语句有两个功能:

  • 1.当key不存在时,往dict中添加对应的key:value元素。
  • 2.当key存在时,会更新dict,用新的value 替换原来的value。

在使用赋值语句往dict中添加元素时,为了避免不必要的覆盖问题,我们需要先判断key是否存在,然后再做更新。

【E4】请更新Alice的成绩为60,并把旧的成绩记录下来。

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
d['Alice'] =60
print(d)

四、删除dict元素

当我们不需要这个元素时,需要把元素从dict中删除,pop()方法快速删除元素。但需要指定需要删除元素的key,并返回value。

<**注>**pop()方法的参数是dict中的key,当key不存在时,同样会引起错误。

d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
print(d)
alice_score =d.pop('Alice')
print(alice_score)
print(d)
bob_score =d.pop('Bob')
print(bob_score)
print(d)

五、dict的特点查找速度快

查找速度快

dict的第一个特点是查找速度快,而list的查找速度随着元素增加而逐渐下降。dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。

有序与无序

在python3.5之前,dict元素插入顺序是无序的。python3.5之后元素有序。

python遍历dict

遍历dict有两种方法

  • 第一种是遍历dict的所有key,并通过key获得对应的value。
  • 第二种方法是通过dict提供的items()方法,items()方法会返回dict中所有的元素,每个元素包含key和value。

【E5】以此输出同学的每次成绩。

d = {‘Alice’: [50, 61, 66], ‘Bob’: [80, 61, 66], ‘Candy’: [88, 75, 90]}

d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]}
for key,value in d.items():
    if value > 60:
        print(key,value)
   ==>  #('Bob', [80, 61, 66])
		#('Alice', [50, 61, 66])
		#('Candy', [88, 75, 90])

六、清除所有元素

dict 提供clear()函数,直接清除dict 中所有元素。

d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]}
print(d) # ==> {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]}
d.clear()
print(d)  #====》[]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python dict 字典 以及 赋值 引用的一些实例(详解)

    python dict 字典 以及 赋值 引用的一些实例(详解)

    下面小编就为大家带来一篇python dict 字典 以及 赋值 引用的一些实例(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Python使用PyQt开发一个桌面计算器的实战指南

    Python使用PyQt开发一个桌面计算器的实战指南

    在桌面应用开发中,计算器 是一个非常适合入门的练手项目, 它涉及到图形界面设计、事件绑定、信号槽机制、布局管理等核心概念,今天我们将使用 PyQt5一步步实现一个可用的计算器程序,需要的朋友可以参考下
    2025-11-11
  • python实现机器人卡牌

    python实现机器人卡牌

    这篇文章主要为大家详细介绍了python实现机器人卡牌,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 详解Pytorch 使用Pytorch拟合多项式(多项式回归)

    详解Pytorch 使用Pytorch拟合多项式(多项式回归)

    这篇文章主要介绍了详解Pytorch 使用Pytorch拟合多项式(多项式回归),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • python的pywebview库结合Flask和waitress开发桌面应用程序完整代码

    python的pywebview库结合Flask和waitress开发桌面应用程序完整代码

    pywebview是轻量级Python库,用于创建跨平台桌面应用,结合HTML/CSS/JS界面与Python交互,支持Windows/macOS/Linux,资源占用低,可与Flask、Waitress集成,便于开发、部署,本文给大家介绍python的pywebview库结合Flask和waitress开发桌面应用程序简介,感兴趣的朋友一起看看吧
    2025-07-07
  • 基于python求两个列表的并集.交集.差集

    基于python求两个列表的并集.交集.差集

    这篇文章主要介绍了基于python求两个列表的并集.交集.差集,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 通过代码实例了解Python异常本质

    通过代码实例了解Python异常本质

    这篇文章主要介绍了通过代码实例了解Python1异常本质,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Python将文本去空格并保存到txt文件中的实例

    Python将文本去空格并保存到txt文件中的实例

    今天小编就为大家分享一篇Python将文本去空格并保存到txt文件中的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python FastAPI返回不带双引号的字符串问题

    Python FastAPI返回不带双引号的字符串问题

    这篇文章主要介绍了Python FastAPI返回不带双引号的字符串问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python rindex()方法案例详解

    Python rindex()方法案例详解

    这篇文章主要介绍了Python rindex()方法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09

最新评论