首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据最大值的长度从python中查找条目列出了二叉树?

根据最大值的长度从python中查找条目列出了二叉树?
EN

Stack Overflow用户
提问于 2019-08-29 11:28:50
回答 4查看 98关注 0票数 3

假设我有一本字典,如:

代码语言:javascript
复制
dicl = {'amazon': [668, 667, 879], 'flipkart': [678], 'hey': [89,79]}

我想根据项目长度的降序打印字典项。

我想要的输出:

代码语言:javascript
复制
{'amazon' : 3, 'hey' : 2, 'flipkart' : 1}

但是我得到的结果是按项目的顺序排序,而我想要根据项目的降序显示项目?

我试过的是:

代码语言:javascript
复制
cov_m = {k : len(v) for k, v in sorted(dicl.items())}

当前产出:

代码语言:javascript
复制
{'amazon' : 3, 'flipkart' : 1, 'hey' : 2}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-08-29 11:32:19

可以将键lambda函数作为参数传递给sorted函数,以指定排序条件:

代码语言:javascript
复制
dicl = {'amazon': [668, 667, 879], 'flipkart' : [678], 'hey' : [89,79]}

cov_m = {k : len(v) for k, v in sorted(dicl.items(), key = lambda i : -len(i[1]))}

print(cov_m)

输出:

代码语言:javascript
复制
{'amazon': 3, 'hey': 2, 'flipkart': 1}

在这里,len(i[1])是值的长度,我按-len(i[1]) (负长度)排序,因为您希望它们按降序排列,如果使用更高级的排序标准,则应该使用, reverse = True)

票数 5
EN

Stack Overflow用户

发布于 2019-08-29 11:33:06

使用带有自定义键的sorted

Ex:

代码语言:javascript
复制
dicl = {'amazon': [668, 667, 879], 'flipkart': [678], 'hey' : [89,79]}
print({k: len(v) for k, v in sorted(dicl.items(), key=lambda x: len(x[1]), reverse=True)})

输出:

代码语言:javascript
复制
{'amazon': 3, 'hey': 2, 'flipkart': 1}
票数 2
EN

Stack Overflow用户

发布于 2019-08-29 11:42:22

两个建议的答案都在每个项目上调用len()两次。为什么不叫一次呢?(不是为了表演,而是为了冷静)

代码语言:javascript
复制
dicl = {'amazon': [668, 667, 879], 'flipkart': [678], 'hey' : [89,79]}

length_dict = {k: len(v) for k, v in dicl.items()} 

# Sort on length-values in dict, use inverse of length as @MrGeek suggests
sorted_on_values = sorted(
    length_dict.items(),
    key=lambda d: -d[1]
)
sorted_dict = dict(sorted_on_values)

输出

代码语言:javascript
复制
{'amazon': 3, 'hey': 2, 'flipkart': 1}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57709191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档