簡體   English   中英

如何對字典的 1/3 進行列表理解?

[英]How do I make a list comprehension for 1/3 of a dictionary?

我對 python 比較陌生,我開始學習列表理解,起初它們看起來有點復雜,但隨着時間的推移開始變得直觀。 但是,有一個問題我還沒有解決

function 接收字典作為參數,其值如下所示:

datadict = dict(a1=[], a2=[], a3=[], b1=[], b2=[], b3=[], c1=[], c2[], c3=[])

一本包含一些列表的字典,其中當然也包含(浮動)值所有列表都具有相同的 len()

function 應該根據這樣的元組列表中的字母將嵌套列表與字典分開:

    list_a = []

for entry in range(len(datadict["a"])):
    list_a.append((
        datadict["a1"][entry],
        datadict["a2"][entry],
        datadict["a3"][entry]
    ))

這行得通,但在我看來,它看起來非常笨重/難以閱讀,而且我無法從中理解列表。 我嘗試使用 zip() 方法,嘗試解包,但我無法弄清楚。

我不確定我是否正確理解了任務的描述。 通常,您應該自定義 function 以嵌入邏輯並在列表理解中使用它。 它更具可讀性。

這是一個基於您的帖子的示例:

datadict = dict(a1=[1,2,3], a2=[4,5,6], a3=[7,8,9], b1=[0,0,0], b2=[1,1,1], b3=[2,2,2])

def f(d, i):
    return (d['a1'][i], d['a2'][i], d['a3'][i])

result = [f(datadict, n) for n in range(len(datadict['a1']))]

print(result)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM