繁体   English   中英

Pythonic方法按关联数字对字符串数组进行排序

[英]Pythonic way to sort array of string by an associated number

需要按其关联的浮点速度对 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 []

sorted内置函数接受一个key=参数。 您可以使用它来提供一个函数,该函数将返回比较键(在本例中为速度),如下所示:

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

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

您可以使用sortsortedkey参数来设置sorted前调用的函数。 在您的情况下, sorted(hosts, key=getSpeed)应该足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM