如何判断哪个键在字典中存储的值最大

时间:2018-06-26 01:37:02

标签: python dictionary key python-3.6

我有一个完整的程序,该程序在不同的功能中具有以前的词典,从而为我提供了飞机起降城市的列表。

我正在尝试编写一个函数,该函数确定哪些键具有最多的外出航班,而我无法弄清楚如何找到哪些键具有最大的值。我的字典被命名为Flights,其中以出发城市为键,以到达城市为值。

def外向(航班):     长度= 0     对于我(航班):         如果(len(flights [i])>长度):             长度=(len(flights [i]))             打破         其他:            继续

for i in flights:
    if (len(flights[i]) == length):
        pop = (len(flights[i]))

print ("the most outgoing flight is: " , [i])

该代码假定可以正常工作,但是由于某种原因,它无法为我提供文件的正确最大输出。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

最简单的解决方案是只使用内置的max函数和列表理解功能:

def outgoing(flights):
    print(max([len(i) for i in flights]))

如果要坚持使用代码,则需要将每次迭代的最大值与最大值进行比较:

def outgoing(flights): 
    max_outgoing = 0 
    for i in flights:  
        if(max_outgoing < len(flights[i])):
            print(max_outgoing)
            max_outgoing = len(flights[i])

编辑:在重新阅读您的问题时,您似乎还想获得最大值的键。只需这样做:

def outgoing(flights): 
    max_outgoing = 0 
    max_key = None
    for i in flights:  
        if(max_outgoing < len(flights[i])):
            print(max_outgoing)
            max_outgoing = len(flights[i])
            max_key = i

或更短的版本:

def outgoing(flights):
    out_dict = {i: len(i) for i in flights}
    max_out = max(out_dict, key=out_dict.get)
    print(max_out)
    print(flights[max_out])

答案 1 :(得分:0)

您对flights的结构不是很清楚,所以我假设它是键,是字符串,值是字符串列表。

执行此操作的一种方法是创建一个元组列表,其中每个元素均为(departure_city, len(flights[departure_city]))。然后,您可以按到达人数对列表进行排序。

def outgoing(flights):
    # Create a list of tuples
    flight_tups = [(departure_city, len(flights[departure_city])) for departure_city in flights]

    # Sort the list by number of arrivals
    #   We do this by passing a lambda to `sort`,
    #   telling it to sort by the second value in
    #   each tuple, i.e. arrivals
    flight_tups.sort(key=lambda tup: tup[1])

    # We can now get the city with the most arrivals by
    #   taking the first element of flight_tups
    most = flight_tups[0]
    print(f'City: {most[0]}\nNumber of Arrivals: {most[1]}')

注意:您也可以使用max,但是从您的问题来看,您似乎想要 到达次数最多的城市 s ,而不仅仅是到达次数最多的城市。使用sort也可以告诉您是否有平局。