获取Di中最长的元素

2024-05-20 08:20:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我将数据存储在字典中,其中键是整数,值是整数的元组。 我需要得到最长元素的长度和它的键。

我找到这个是为了得到dict的最大值:

def GetMaxFlow(flows):        
    maks=max(flows, key=flows.get)
    return flows[maks],maks

我试图修改并作为一个键使用len函数,但它不起作用,所以我尝试了一些合理而直接但低效的方法:

def GetMaxFlow(flows):
    Lens={}
    for a in flows.iteritems():
        Lens[a[0]]=len(a[1])
    maks=max(Lens, key=Lens.get)
    return Lens[maks],maks

有没有一种更优雅、更像Python的方法呢?


Tags: 数据方法keygetlenreturn字典def
3条回答

我认为这是Python中仍然存在lambda的原因之一。

def GetMaxFlow(flows):        
    maks=max(flows, key=lambda k: len(flows[k]))
    return flows[maks],maks

特别是要退蓝。。。

def GetMaxFlow(flows):        
    maks=max(flows, key=lambda k: len(flows[k]))
    return len(flows[maks]), maks

或者使用eumiro的解决方案,这在本例中实际上更有意义。(我误解了你的问题。)

如果您需要长度和密钥:

def GetMaxFlox(flows):
    return max((len(v), k) for k,v in flows.iteritems())

如果需要值和键:

def GetMaxFlox(flows):
    return max((len(v), v, k) for k, v in flows.iteritems())[1:]

或者

def GetMaxFlox(flows):
    return max(((v, k) for k, v in flows.iteritems()), key=lambda (v,k): len(v))

您不需要存储所有元素的长度,只需要存储密钥和当前最长元组的长度:

def GetMaxFlow(flows):
    maks_length=0
    for key,value in flows.iteritems():
            if len(value)>=maks_length:
                    maks_key = key
                    maks_length = len(value)
    return maks_length, maks_key     

相关问题 更多 >