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

Python创建列表字典

严兴言
2023-03-14
问题内容

我想创建一个字典,其值为列表。例如:

{
  1: ['1'],
  2: ['1','2'],
  3: ['2']
}

如果我做:

d = dict()
a = ['1', '2']
for i in a:
    for j in range(int(i), int(i) + 2): 
        d[j].append(i)

我收到一个KeyError,因为d […]不是列表。在这种情况下,我可以在分配a后添加以下代码以初始化字典。

for x in range(1, 4):
    d[x] = list()

有一个更好的方法吗?可以说,直到进入第二个for循环,我才知道需要的键。例如:

class relation:
    scope_list = list()
...
d = dict()
for relation in relation_list:
    for scope_item in relation.scope_list:
        d[scope_item].append(relation)

然后可以替代

d[scope_item].append(relation)

if d.has_key(scope_item):
    d[scope_item].append(relation)
else:
    d[scope_item] = [relation,]

处理此问题的最佳方法是什么?理想情况下,追加将“有效”。有什么方法可以表达我想要空列表的字典,即使我第一次创建列表时也不知道每个键?


问题答案:

您可以使用defaultdict:

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> a = ['1', '2']
>>> for i in a:
...   for j in range(int(i), int(i) + 2):
...     d[j].append(i)
...
>>> d
defaultdict(<type 'list'>, {1: ['1'], 2: ['1', '2'], 3: ['2']})
>>> d.items()
[(1, ['1']), (2, ['1', '2']), (3, ['2'])]


 类似资料:
  • 问题内容: 我有一个很大的文件(大约有200k输入)。输入形式为: 我正在读取此文件并将其存储在列表中,如下所示: 每当看到新行时,都会拆分文件。因此,文本如下所示: 我现在必须将这些值存储在字典中,其中键值是每个列表的第一个元素。即键将是A,B,C,D。我发现很难输入值作为列表的其余元素。即字典应该看起来像: 我已经完成以下工作: 请帮助我如何将值添加到字典中。如果列表中没有任何元素(除了将作为

  • 问题内容: 我需要将列表转换成字典,如下所示。奇数元素具有键,偶数元素具有值。 -> 获得相同结果的更好方法? 添加 似乎在工作 问题答案: dict(x[i:i+2] for i in range(0, len(x), 2))

  • 问题内容: 我喜欢Python列表理解语法。 可以用来创建字典吗?例如,通过遍历键和值对: 问题答案: 从Python 2.7和3开始,你应该只使用语法: 在Python 2.6和更早版本中,内置函数可以接收键/值对的迭代,因此你可以将其传递给列表推导或生成器表达式。例如: 但是,如果你已经具有可迭代的键key/value,则根本不需要使用任何理解-最简单的方法是直接调用内置函数:

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

  • 本文向大家介绍使用Python中的列表内容创建字典,包括了使用Python中的列表内容创建字典的使用技巧和注意事项,需要的朋友参考一下 在python中,经常需要将集合类型从一种类型更改为另一种类型。在本文中,我们将看到在给出多个列表时如何创建字典。挑战在于如何将所有这些列表组合在一起以创建一个字典,以字典键值格式容纳所有这些值。 带拉链 zip函数可用于组合不同列表的值,如下所示。在下面的示例中

  • 问题内容: 我喜欢Python列表理解语法。 它也可以用来创建字典吗?例如,通过遍历键和值对: 问题答案: 使用字典理解: 注意:这适用于Python 3.x(及2.7及更高版本)。以前在Python 2.6和更早版本中,dict内置函数可以接收可迭代的键/值对,因此您可以将其传递给列表理解或生成器表达式。例如: 在简单的情况下,您根本不需要理解… 但是,如果您已经具有可迭代的键和/或值,只需di