我将数据存储在字典中,其中key是一个整数,value是一个整数元组.我需要得到最长元素的长度及其关键.
我发现这是为了获得dict的最大值:
def GetMaxFlow(flows):
maks=max(flows, key=flows.get)
return flows[maks],maks
Run Code Online (Sandbox Code Playgroud)
我试图修改并作为一个关键用途使用该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
Run Code Online (Sandbox Code Playgroud)
有更优雅,更pythonic的方式吗?
sen*_*rle 11
这是lambda我认为Python中仍然存在的原因之一.
def GetMaxFlow(flows):
maks=max(flows, key=lambda k: len(flows[k]))
return flows[maks],maks
Run Code Online (Sandbox Code Playgroud)
要专门返回len ...
def GetMaxFlow(flows):
maks=max(flows, key=lambda k: len(flows[k]))
return len(flows[maks]), maks
Run Code Online (Sandbox Code Playgroud)
或者使用eumiro的解决方案,在这种情况下实际上更有意义.(我误解了你的问题.)
如果您需要长度和密钥:
def GetMaxFlox(flows):
return max((len(v), k) for k,v in flows.iteritems())
Run Code Online (Sandbox Code Playgroud)
如果您需要值和密钥:
def GetMaxFlox(flows):
return max((len(v), v, k) for k, v in flows.iteritems())[1:]
Run Code Online (Sandbox Code Playgroud)
要么
def GetMaxFlox(flows):
return max(((v, k) for k, v in flows.iteritems()), key=lambda (v,k): len(v))
Run Code Online (Sandbox Code Playgroud)