我有一个字典,我正在创建一个函数,它获取相同的每个值,并用值的键创建一个新字典。我有一些医生测试的例子。我相信这可以在一行使用列表理解来完成。在
>>> rating = {"bob": "excellent", "barnum": "passing", "beatrice": "satisfactory", "bernice": "passing", "ben": "no pass", "belle": "excellent", "bill": "passing", "bernie": "passing", "baxter": "excellent"}
>>> new_dict(rating) # new_dict is the function
>>> {'excellent': ['bob', 'belle', 'baxter'], 'passing': ['barnum', 'bernice', 'bill', 'bernie'], 'satisfactory': ['beatrice'], 'no pass': ['ben']}
您可以使用
itertools.groupby
和排序来执行一行代码:但这是不必要的低效,它需要一个排序操作来具体化一个辅助列表,而且它过于复杂。不要试图只写一句话。编写干净易读的代码,高效地使用python数据结构。只需使用一个
^{pr2}$collections.defaultdict
,这是分组的标准方式:我不认为写这篇文章是一种理解。考虑来自^{} 模块的^{} 。在
这有时间复杂性O(n),任何我尝试过的理解,比如
^{pr2}$在O(n**2)时更糟。在
用列表理解法尽可能缩短答案。我确信有一种方法可以将函数缩减为一行。在
这将打印以下输出:
^{pr2}$相关问题 更多 >
编程相关推荐