编写代码以查找并打印出频率最高的状态。 状态名称和频率都需要打印出来。
[[''NSW''87'] ['QLD''49'] ['SA''14'] ['VIC''54'] ['WA''19']]
我有这条信息,必须提取频率最高的状态87。 我是NumPy的新手,请指导。
答案 0 :(得分:0)
不确定[['NSW' '87'] ['QLD' '49'] ['SA' '14'] ['VIC' '54'] ['WA' '19']]
是什么,但是我认为您想说[['NSW', '87'], ['QLD', '49'], ['SA', '14'], ['VIC', '54'], ['WA', '19']]
。
因此,鉴于:
>>> l = [['NSW', '87'], ['QLD', '49'], ['SA', '14'], ['VIC', '54'], ['WA', '19']]
我们可以使用生成器表达式:
>>> highest = max(item[1] for item in l)
>>> (print(item) for item in l if item[1] == highest)
['NSW', '87']
或者:
>>> highest = max(item[1] for item in l)
>>> for item in l:
... if item[1] == highest:
... print(item)
['NSW', '87']
或使用zip
:
>>> keys, values = zip(*l)
>>> highest = max(values)
>>> print([keys[values.index(highest)], highest])
['NSW', '87']
使用timeit.timeit
(并删除每个示例的print
),我们得到以下值:
1.819037475 # First Example
1.648459721 # Second Example
1.406044623 # Third Example
您应该使用最后一个,它使用zip
,因为它比其他的更快。