Pythonic方法通过关联的数字对字符串数组进行排序

时间:2016-04-17 23:07:18

标签: python sorting dictionary tuples

需要按其关联的浮动速度

对HOST字符串数组进行排序

有没有很好的方法从排序的元组中获取数组? 我可以消除有序数组吗?

#!/usr/bin/env python

def getSpeed(url):
    if url == 'h1':
         return 0.522611856461
     elif url == 'h2':
         return 0.438368797302
     elif url == 'h3':
         return 0.443703174591

def orderHosts():
    hostInfo = []
    ordered = []
    hosts = ['h1', 'h2', 'h3']
    for host in hosts:
        hostInfo.append( (host, getSpeed(host)) )

    print hostInfo
    return ordered

if __name__ == "__main__":
    print("orderedHosts {}".format(orderHosts()))

输出:

[('h1', 0.522611856461), ('h2', 0.438368797302), ('h3', 0.443703174591)]

orderedHosts []

2 个答案:

答案 0 :(得分:1)

sorted内置函数采用key=参数。您可以使用它来提供一个函数来返回比较键(在这种情况下,速度),如下所示:

def getSpeed(host):
    ... as you had it
    return speed

hosts = ['h1', 'h2', 'h3']
ordered_hosts = sorted(hosts, key=getSpeed)

答案 1 :(得分:1)

您可以使用keysort的{​​{1}}参数来设置排序前调用的函数。在您的情况下,sorted就足够了。