【问题标题】:Python dictionary comprehension with sets带集合的 Python 字典理解
【发布时间】:2017-04-11 22:54:32
【问题描述】:

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

  • set 的第一个值是 id(字典键)
  • 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])}

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

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

    以下将使用您的函数返回的元组创建您想要的字典:

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

    【讨论】:

      【解决方案2】:
      d = {x:y for x,y in [add_value(li) for li in l]}
      

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

      一定有更好的方法,但你的问题比第一眼看起来更难。

      【讨论】:

        【解决方案3】:

        你可以这样做

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

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

        【讨论】:

        • 两次调用函数不是很整洁。
        猜你喜欢
        • 1970-01-01
        • 2018-08-13
        • 2018-08-05
        • 2017-03-09
        • 2015-04-11
        • 2016-10-01
        • 2013-01-08
        • 1970-01-01
        相关资源
        最近更新 更多