集合

时间:2017-04-11 22:54:32

标签: python dictionary

我有一个返回集合的函数:

  • set的第一个值是id(字典键)
  • set的第二个值是列表(字典值)

我想创建一个dict理解并使用该set来填充字典键和值。需要助手从函数中获取值并使用它来填充键和值。

预期结果:

{ 52: [1, 2, 3, 4], 94: [3, 4, 5, 4]}

我有以下代码来简化示例:(您可以忽略枚举)

from random import randint
a1 = [1,2,3]
b1 = [3,4,5]

l = [a1, b1]

def add_value(a):
    return randint(0,100), a + [4]

d = {x: add_value(y) for x, y in enumerate(l, start=1)}
print d

现在打印:

{1: (52, [1, 2, 3, 4]), 2: (94, [3, 4, 5, 4])}

3 个答案:

答案 0 :(得分:1)

我不明白你为什么要使用enumerate,因为你不在这里使用索引。

以下内容将使用函数返回的元组创建所需的字典:

d = dict(add_value(x) for x in l)

答案 1 :(得分:0)

你可以这样做

d = {add_value(y)[0]:add_value(y)[1] for y in [a1,b1]}

d = dict(add_value(y) for y in [a1,b1])

答案 2 :(得分:0)

d = {x:y for x,y in [add_value(li) for li in l]}

应该有效。 在这种情况下,首先创建函数add_value返回的元组列表,然后对于此列表的每个项目,解压缩元组,并将key:value添加到字典中。

必须有更好的方法,但你的问题比第一种观点看起来更难。