如何对字典的 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)]
我是 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)]