当前位置: 首页 > 面试题库 >

从键列表,值元组创建字典,同时保持重复的键

莘睿
2023-03-14
问题内容

因此,我对以下方面的理解:

dict((x.key, x.value) for x in y)

当然,问题在于,如果存在多个x.key具有相同值的s,则它们会折叠在一起,最后一个x.value以那个x.key唯一的唯一成员存在。我实际上想将结果字典的值列出:

{
    'key1': ['value1'],
    'key2': ['value2', 'value3', 'value4'],
    'key3': ['value5'],
    # etc.
}

这种理解是否可能?


问题答案:

您可以将元素一一添加到默认情况下包含空列表的字典中:

import collections

result_dict = collections.defaultdict(list)
for x in y:
    result_dict[x.key].append(x.value)

您也可以执行非常相似的操作,而不必使用collections模块:

result_dict = {}
for x in y:
    result_dict.setdefault(x.key, []).append(x.value)

但这可以说是不太清晰。

一个等效的,更清晰的(不需​​要“解析”不太常见的setdefault),但更加行人化的基本Python方法是:

result_dict = {}
for x in y:
    if x.key not in result_dict:
        result_dict[x.key] = []
    result_dict[x.key].append(x.value)

第一个解决方案显然是首选,因为它同时简洁,清晰,快速。



 类似资料:
  • 问题内容: 我有以下格式的词典列表: 我想将此字典列表分组为一个字典,例如: 我目前所做的是,遍历所有字典并创建键列表,然后再次遍历该键以创建。我想知道是否有更简单的方法来完成此任务。有人可以帮忙吗? 问题答案: 谷歌的事情: python列表理解 python dict理解 蟒蛇星 python dict获取 python设置联合

  • 问题内容: 对于学校,我正在为游戏的排名列表编写一个小程序。为此,我使用字典,将玩家的名称作为键名,将分数作为键值。将有10场比赛,每场比赛都有一个自动排名系统,我将其打印到文件中。香港专业教育学院已经设法编码排名系统,但现在我面临更大的挑战,我无法解决: 我必须进行总体排名,这意味着someplayername可以在具有多个得分的多个比赛中使用,但我只需要保留重复项中的最高得分即可。 简而言之

  • 如何将包含key:pair值(如{Hello:3,Bye:4})的字典转换为两个不同的列表?一个用于键,一个用于值? 谢谢

  • 问题内容: 这个问题已经在这里有了答案 : 9年前关闭。 我有两个清单: 我需要从这些列表中创建一个元组列表,如下所示: 我尝试这样做: 但导致: 即x中每个元素与y中每个元素的元组列表…什么是我想做的正确方法?谢谢… 编辑: 在编辑之前提到的其他两个重复是我的错,我将其缩进另一个for循环中是错误的… 问题答案: 使用内置函数: 在Python 3中: 在Python 2中:

  • 键值列表 图 字典 到目前还没有讲到任何关联性数据结构,即那种可以将一个或几个值关联到一个key上。 不同语言有不同的叫法,如字典,哈希,关联数组,图,等等。 Elixir中有两种主要的关联性结构:键值列表(keyword list)和图(map)。 7.1-键值列表 在很多函数式语言中,常用二元元组的列表来表示关联性数据结构。在Elixir中也是这样。 当我们有了一个元组(不一定仅有两个元素的元

  • 字典的键是日期,值是一个长度不同的列表 例如,字典是 我想要的是像这样的数据帧