首页
社区
课程
招聘
字典输出value值用set去重会影响顺序怎么解决

问题描述

字典输出value值用set去重会影响顺序怎么解决

相关代码

a={"a":'dddd','b':'ccc','c':'sss','d':'fffff','e':'ccc'}
for f in set(a.values()):
print(f)

相关调试信息

运行结果如下:
sss
fffff
dddd
ccc
并没有按照字典键的顺序来输出
如果想让其按顺序输出,该怎么写?

收藏
1条回答
T_N_T 2024-2-18

这个问题问得好,这个涉及到python执行去重的底层算法了(版本不同算法不一样),老版本的算法他会先匹配字符串,并将匹配到的字符串当前位置往前的所有元素都拼接在重复元素后面,比如:dddd,ccc,sss,fffff,ccc,就变成了sss,fffff,dddd,ccc,要解决这个问题要么改底层代码,要么用切片方式,或者逻辑判断key值解决问题,新版本已经解决这个问题,不会存在顺序不一致

新版本运行效果:
PS C:\Users\84\Desktop> python
Python 3.11.5 | packaged by Anaconda, Inc. | (main, Sep 11 2023, 13:26:23) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

PS C:\Users\84\Desktop> python .\liyou.py
dddd
ccc
sss
fffff

老版本的解决方式:
使用list2.sort(key=list1.index)
其中list1是将原字典的值转化为列表

回复
二进制Pwn初级篇
  参与学习     103 人
  提问次数     1 个
二进制Pwn初级篇-揭开面纱带你进入计算机底层
我的问答 领取收益
0
我的提问
0
我的回答
0
学习收益