字典輸出value值用set去重會影響順序怎么解決
a={"a":'dddd','b':'ccc','c':'sss','d':'fffff','e':'ccc'}for f in set(a.values()): print(f)
運(yùn)行結(jié)果如下:sssfffffddddccc并沒有按照字典鍵的順序來輸出如果想讓其按順序輸出,該怎么寫?
這個問題問得好,這個涉及到python執(zhí)行去重的底層算法了(版本不同算法不一樣),老版本的算法他會先匹配字符串,并將匹配到的字符串當(dāng)前位置往前的所有元素都拼接在重復(fù)元素后面,比如:dddd,ccc,sss,fffff,ccc,就變成了sss,fffff,dddd,ccc,要解決這個問題要么改底層代碼,要么用切片方式,或者邏輯判斷key值解決問題,新版本已經(jīng)解決這個問題,不會存在順序不一致
新版本運(yùn)行效果:PS C:\Users\84\Desktop> pythonPython 3.11.5 | packaged by Anaconda, Inc. | (main, Sep 11 2023, 13:26:23) [MSC v.1916 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.
PS C:\Users\84\Desktop> python .\liyou.pyddddcccsssfffff
老版本的解決方式:使用list2.sort(key=list1.index)其中l(wèi)ist1是將原字典的值轉(zhuǎn)化為列表