【发布时间】:2017-06-14 09:48:07
【问题描述】:
例如,如果字典是{0:0, 1:0, 2:0},则创建一个列表:[0, 0, 0]。
如果这不可能,您如何取字典的最小值,即字典:{0:3, 1:2, 2:1} 返回1?
【问题讨论】:
-
dict.values()会以列表的形式(或多或少)为您提供值
标签: python python-2.7 list dictionary
例如,如果字典是{0:0, 1:0, 2:0},则创建一个列表:[0, 0, 0]。
如果这不可能,您如何取字典的最小值,即字典:{0:3, 1:2, 2:1} 返回1?
【问题讨论】:
dict.values() 会以列表的形式(或多或少)为您提供值
标签: python python-2.7 list dictionary
您可以简单地采用 minimum:
min(dic.values())
然后将其转换为列表:
list(dic.values())
但由于字典是无序的,结果列表的元素顺序是不确定的。
在python-2.7 中,您无需调用list(..),只需dic.values() 就足够了:
dic.values()
【讨论】:
>>> a = {0:0, 1:2, 2:4}
>>> a.keys()
[0, 1, 2]
>>> a.values()
[0, 2, 4]
【讨论】:
字典定义如下:
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 似乎对你正在做的事情来说是个糟糕的选择。
【讨论】:
i++ 不是有效的python
将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 中,您需要调用这些列表)
>>> 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)
>>>
这里你需要一个关键函数,它是一个函数,它将你提供给主函数的任何一个元素都返回给你想要比较的元素(你也可以将其转换为其他元素) .
lambda 是define anonymous 函数的一种方式,让您无需这样做
>>> def last(x):
return x[-1]
>>> min(test.items(),key=last)
(3, 10)
>>>
【讨论】: