2017-04-11 51 views
0

我有一個返回一組函數:Python字典的理解與套

    一套
  • 首先看重的是ID(字典鍵)
  • 組的第二值列表(字典值)

我想創建一個詞典理解,並使用該集來填充字典鍵和值。需要助手從函數獲取值並使用它來填充鍵和值。

預期的結果:

{ 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])} 

回答

1

我不明白你爲什麼使用enumerate,si你在這裏沒有使用索引。

下會創建您要使用你的函數返回的元組的詞典:

d = dict(add_value(x) for x in l) 
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

我已經更新了我的答案。謝謝你的評論。 –

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

應該可以工作。 在這種情況下,首先創建函數add_value返回的元組列表,然後對此列表中的每個項目解開元組,然後向字典中添加一個key:值。

必須有更好的辦法,但是你的問題比第一種看法更難。