我们将使用3个不同的功能,它的名字是充分说明...
def dict_of_means(d):
return {k:sum(v)*1.0/v.count() for k, v in d.items()}
注乘以1.0的强制浮动。
def dict_of_max(d):
return {k:max(v) for k, v in d.items()}
最后
def print_sorted(d,is_float=0):
l = [(v, k) for k, v in d.items()]
l.sort()
for v, k in l[::-1]:
if is_float:
print "%-12s%5.2" % (k+" :", v)
else:
print "%-12s%2d" % (k+" :", v)
用法的例子
In [31]: teammates={"Ali":[1,5,8],"James":[3,2,1],"Fred":[9,4,2]}
In [32]: print_sorted(dict_of_max(teammates))
Fred : 9
Ali : 8
James : 3
In [33]: print_sorted(dict_of_means(teammates), 1)
Fred : 5.00
Ali : 4.67
James : 2.00
In [34]:
COMMENTS
有一个反复使用的成语for k, v in d.items()
用于所有三个功能。 字典方法d.items()
为您提供了一个元组列表,例如,
In [34]: teammates.items()
Out[34]: [('James', [3, 2, 1]), ('Fred', [9, 4, 2]), ('Ali', [1, 5, 8])]
,你在反过来每个拆包到循环变量k
分配每个元组的内容(重点,这是相当传统的)和v
(对于价值)。
此时,在所谓的理解中,可以使用大括号'{}'或使用直接括号'['''的列表构建一个字典,您可以返回给调用者,或者您可以进一步处理,如print_sorted
中的情况。
欢迎来到堆栈溢出,你能告诉我们你已经尝试过但是无法工作吗? – 2014-12-04 07:42:08