如何将字典转换为列表?

时间:2017-01-28 22:28:00

标签: python python-2.7 list dictionary

例如,如果词典是{0:0, 1:0, 2:0}制作列表:[0, 0, 0]

如果无法做到这一点,你如何取字典的最小值,即字典:{0:3, 1:2, 2:1}返回1

4 个答案:

答案 0 :(得分:2)

您只需使用最小

min(dic.values())

将其转换为列表,其中包含:

list(dic.values())

但由于字典是无序的,结果列表的元素顺序是未定义的。

中,您无需致电list(..)只需dic.values()即可:

dic.values()

答案 1 :(得分:2)

dictionary转换为列表非常简单,.keys().values().items()

有3种风格
>>> test = {1:30,2:20,3:10}
>>> test.keys() # you get the same result with list(test)
[1, 2, 3]
>>> test.values()
[30, 20, 10]
>>> test.items()
[(1, 30), (2, 20), (3, 10)]
>>> 

(在python 3中你需要调用那些列表)

使用minmax函数

查找最大值或最小值也很容易

>>> min(test.keys()) # is the same as min(test)
1
>>> min(test.values())
10
>>> min(test.items())
(1, 30)
>>> max(test.keys()) # is the same as max(test)
3
>>> max(test.values())
30
>>> max(test.items())
(3, 10)
>>>     

(在python 2中,为了高效,请改用它们的.iter*版本)

最有趣的一个是找到最小/最大值的关键,而最小/最大值也得到了那个

>>> max(test.items(),key=lambda x: x[-1])
(1, 30)
>>> min(test.items(),key=lambda x: x[-1])
(3, 10)
>>>     

这里你需要一个键函数,它是一个函数,它接受你给main函数的任何一个并返回你想要比较它们的元素(你也可以把它转换成别的东西)

lambdadefine anonymous功能的一种方式,可以节省您执行此操作的需要

>>> def last(x):
        return x[-1] 

>>> min(test.items(),key=last)
(3, 10)
>>> 

答案 2 :(得分:1)

>>> a = {0:0, 1:2, 2:4}
>>> a.keys()
[0, 1, 2]
>>> a.values()
[0, 2, 4]

答案 3 :(得分:-1)

字典定义如下:

dict{[Any]:[Any]} = {[Key]:[Value]}

您的问题的问题在于您还没有弄清楚密钥是什么。

1:假设密钥只是数字而且按升序排列dict.values()就足够了,正如其他作者已经指出的那样。

2:假设密钥只是严格按升序排列的数字,而不是正确的顺序:

i = 0
list = []
while i < max(mydict.keys()):
     list.append(mydict[i])
     i += 1

3:假设钥匙只是数字而不是严格按升序排列:
    还有一种方法,但你必须首先获得密钥并通过最大的密钥和try-except

来完成。

4:如果不是这种情况,可能dict不是你想要的,2d或3d数组就足够了吗? 如果其中一个解决方案有效,这也很重要。 Dict对于您正在做的事情似乎是一个糟糕的选择