python的list()函数把字典转成列表,如何保持列表原有的顺序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的list()函数把字典转成列表,如何保持列表原有的顺序?相关的知识,希望对你有一定的参考价值。

代码如下:
z =
'banji': 'sanban',
'xuexiao': 'hongxing',
'nianji': 'wunianji'

li = list(z.values())
print li
>>>['hongxing', 'sanban', 'wunianji']

我想输出['sanban', 'hongxing', 'wunianji'],要求代码简洁,最好用内置方法。

单纯从数据结构上来讲的话,字典的数据结构是散列,也就是哈希表,它是无序的,而列表的数据结构是链表,是有序的,所以想把字典转换成列表并且保持顺序不变,是不可行的。

题主可以使用OrderedDict(Python 2.7+)有序字典,OrderedDict是dict的子类,它记住了内容添加的顺序。

另外如果想把字典的key转换成列表,使用dict.keys()就可以了。
参考技术A 正解,除非原先不用dict,python里有个OrderedDict 存储插入顺序
可以这样
z = collections.OrderedDict()
z[ 'banji'] = 'sanban',
z[ 'xuexiao'] = 'hongxing',
z[ 'nianji'] = 'wunianji'
然后就是你想要的结果了本回答被提问者采纳
参考技术B 做成字典以后就没有顺序可言了,内部按照自有顺序排放
>>> z.keys()
['xuexiao', 'banji', 'nianji']
迭代的时候就是按照这个顺序的。
所以需要顺序的话,还是算啦
参考技术C 数据在dict中已经不是按照你写的次序存放了,所以你这个问题是无解的 参考技术D 0.0 字典是无序的

如何在python中把一个set转化成另外一个list的名称?

比如, 已有一串对象a1=3, a2=34,a3=47129.......,现在用户输入int(1或2或3),需要返回对应的值 (如果用户输入的是2,就返回a2的值,如果输入的是3,就返回 a3的值 )。

现在用户输入了很多int,全储存在一个set,也就是集合里, 现在要把所有这个集合里的int全部根据上面的一一对应的关系转换成: a1, a2, a3, a4......这种类型的对象,然后把转换后的对象(也就是相应的a1,a2,a3..... )存在一个新集合(set)里,该怎么做呢?

对你的第一个问题:
a1=31
a2=32
a3=33
temp=input("input int: ")
exec "print a"+str(temp)

对你的第二个问题:输入的int被存在inputset里,对应的a1、a2或a3存在varset里
a1=31
a2=32
a3=33
inputset=set()
varset=set()
while 1:
temp=input("input int(input 0 for end): ") # 输入0就结束输入

if temp <> 0:
inputset.add(temp)
else:
break
print inputset
for e in inputset:
exec "varset.add(a"+str(e)+")"
print varset
参考技术A 很简单的东东,举个例子.
我只用两个数据来演示

a1 = 3
a2 = 34
all_data = 1 : a1 ,2 : a2
user_data = set( [ 1 ] )

new_data = set( all_data[ key ] for key in user_data.intersection( all_data ) )
print( new_data )本回答被提问者采纳

以上是关于python的list()函数把字典转成列表,如何保持列表原有的顺序?的主要内容,如果未能解决你的问题,请参考以下文章

Python - 两个列表(list)组成字典(dict)

Python - 两个列表(list)组成字典(dict)

python列表中的字符串,怎么转化成列表?

如何在python中把一个set转化成另外一个list的名称?

python中如何将字符串转换为字典

python 中怎么把,list,字典dict转换为字符串