如何对字典的 1/3 进行列表理解?

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

我是 python 的新手,我开始学习列表理解,起初它们看起来有点复杂,但随着时间的推移开始变得直观。 但是,还有一个问题我还没有解决

函数接收字典作为参数,其值如下所示:

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

一本字典,里面有一些列表,当然,也包含(浮动)值 所有列表都有相同的 len()

该函数应根据元组列表中的字母将嵌套列表与 dict 分开,如下所示:

    list_a = []

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

这有效,但在我看来,它看起来非常笨重/难以阅读,而且我无法从中理解列表。 我尝试使用zip()方法,尝试解包,但我无法弄清楚。

我不确定我是否正确理解了任务描述。 通常,您应该创建一个自定义函数来嵌入逻辑并在列表理解中使用它。它更具可读性。

这里是一个基于你的例子 post:

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