2
secsilm 2021 年 5 月 14 日 via Android 升级 Python 程序
|
3
iyaozhen 2021 年 5 月 14 日
不遍历好像不行
话说你为啥需要有序? 而且「有序」如何定义? key 有序?按什么排序,顺序、倒序?还是按 value ? |
4
jsutfun 2021 年 5 月 14 日
如果按 key 的话,python3 已经是有序的了呀
|
5
allan888 2021 年 5 月 14 日
不用别的数据结构也行:
from collections import OrderedDict d = {"ddd": 2, "ccc": 1} sorted_d = OrderedDict() l = d.keys() l.sort() for k in l: sorted_d[k] = d[k] |
6
alittlecode OP @iyaozhen 只是想让他按照我写的顺序显示比如 dict b 只是想在遍历是先出现 ccc 再出现 ddd
|
7
alittlecode OP @allan888 不是为了排序只是为了按照我写的顺序展示根据 key 排序可以使用
my_data = {'Python': 20, 'Swift':32, 'Kotlin': 43, 'Go': 25} # 创建基于 key 排序的 OrderedDict d1 = OrderedDict(sorted(my_data.items(), key=lambda t: t[0])) # 创建基于 value 排序的 OrderedDict d2 = OrderedDict(sorted(my_data.items(), key=lambda t: t[1])) |
8
alittlecode OP 突然想到一个问题这个除非你提前设计好这个字段是怎样的,不然你就算写好一个字典,只是 ide 让你看到是这个顺序,保存到内存就完全变了,你看到的就是个假象,只是你看到的
|
9
iyaozhen 2021 年 5 月 14 日 via Android
你写的顺序这个计算机不好理解吧
要不用 list ? |
10
alittlecode OP @iyaozhen 再维护一个 list 把所有的 key 写进去
|
11
abersheeran 2021 年 5 月 14 日
升级 Python 版本就行了。
|
12
aloxaf 2021 年 5 月 14 日 Python 3.6 中 dict 就已经有序了
而 3.7 起 dict 保持插入顺序成为了正式的 feature 所以,你该升级 Python 了…… |
13
codists 2021 年 5 月 14 日
没搞懂为什么那么多人说“升级 Python”或者“Python3.6 就已经有序了“,这个有序说的是插入的有序。而提问者的问题是”键按字母顺序排序或者按值排序“吧?
|
15
llsquaer 2021 年 5 月 14 日
dict 现在已经有序了..但是有一次我发现 , 用 pyqt 发信号传 dict 数据..,还是出现了无序的问题..解决的方法是,转为元组,然后再 zip() 转为 dict
|
16
chaleaoch 2021 年 5 月 14 日
python3. 6 7 8 忘记是哪个版本 已经开始有序
另外 OrderedDict 考虑一下. |
17
chaleaoch 2021 年 5 月 14 日
楼主忽略 我没看正文.
|
18
ch2 2021 年 5 月 14 日
字典本来就是不保证有序的
|
19
weyou 2021 年 5 月 14 日 via Android
二楼已经给出方面答案了啊,要按照写的顺序就是升到 3.6
|
20
xylophone21 2021 年 5 月 14 日
HashMap 是“无序”的,它的“序”靠的是 Hash 值,如果要“有序”可以用红黑树之类结构,但代价是你只能用你排序的那个字段做快速查找、插入了。
如果即需要用 Key 快速查找、插入,又希望用别的参数来做“序”那么可能你需要一个符合的数据结构。 |
22
BBCCBB 2021 年 5 月 14 日
@Trim21 保证有序也不对.. python3.5 还是 3.6+. 只是恰好实现的 dict 是有序的, 官方好像说不要依赖这个特性?? 因为他们不保证后续依然有序.
|
25
Trim21 2021 年 5 月 14 日 via Android
我突然明白楼主的问题了,楼主说的是 dict 字面量的排序问题吧,这个好像没有保证过是有序的,保证的都是分别设置 key 的顺序。
|
26
Trim21 2021 年 5 月 14 日 via Android
应该只能 OrderedDict([(key,value),])这样了
|
29
renmu123 2021 年 5 月 14 日
https://docs.python.org/zh-cn/3/library/stdtypes.html#mapping-types-dict
在 3.7 版更改: 字典顺序会确保为插入顺序。 此行为是自 3.6 版开始的 CPython 实现细节。 |
30
seeleling 2021 年 5 月 14 日
升级 Python
|
31
francis59 2021 年 5 月 14 日
|
32
cherbim 2021 年 5 月 15 日 via iPhone
不好意思,我的 Python 字典是有序的
|