繁体   English   中英

带有集合的Python字典理解

[英]Python dictionary comprehension with sets

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

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

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

预期结果:

{ 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

现在d打印:

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

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

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

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

应该管用。 在这种情况下,首先创建一个由add_value函数返回的元组列表,然后为该列表的每个项目解压缩元组,然后将key:value添加到字典中。

一定有更好的方法,但是您的问题要比第一眼看上去的要难。

你可以这样子做

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

要么

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM