Python 组合和关联多个词典
我想生成一个字典,其中组织了三组不同图片的六种不同组合。这就是我计算字典的原因:Python 组合和关联多个词典,python,dictionary,Python,Dictionary,我想生成一个字典,其中组织了三组不同图片的六种不同组合。这就是我计算字典的原因: import glob, os, random, sys, time import numpy.random as rnd im_a = glob.glob('./a*') # upload pictures of the a-type, gives out a List of .jpg-files im_n = glob.glob('./n*') # n-type im_e = glob.glob('.
import glob, os, random, sys, time
import numpy.random as rnd
im_a = glob.glob('./a*') # upload pictures of the a-type, gives out a List of .jpg-files
im_n = glob.glob('./n*') # n-type
im_e = glob.glob('./e*') # e-type
# combining Lists of Pictures
A_n = im_a + im_n
N_a = im_n + im_a
A_e = im_a + im_e
E_a = im_e + im_a
E_n = im_e + im_n
N_e = im_n + im_e
# making a Dictionary of Pictures and Conditions
PicList = [A_n, N_a, A_e, E_a, E_n, N_e] # just the six Combinations
CondList = [im_a,im_n,im_a,im_e,im_e,im_n] # images that are in the GO-Condition
ImageList = []
ImageList.append({'PicList':PicList, 'CondList':CondList})
在这一点上有两个问题:
CondList
与PicList
不匹配。最好将PicList
直接关联到CondList
。其中PicList
A\u n
与CondList
im\u A
和n\u A-im\u n、A\u e-im\u A
相关联要回答第一点,您可以使用: 返回的顺序是字典式的,即
im_a + im_n, im_a + im_e, im_n + im_a, im_n + im_e, im_e + im_a, im_e + im_n
只需执行以下操作即可创建相应的条件列表
:
cond_list = [im_a] * 2 + [im_n] * 2 + [im_e] * 2
或者,更一般地说:
d = len(elements) - 1
cond_list = list(chain.from_iterable([el]*d for el in elements))
# or
cond_list = sum(([el]*d for el in elements), [])
嗨@Jakob,目前,这对于StackOverflow来说并不是很好的公式。你有很多次级问题,没有人可能能回答所有的问题。如果你得到多个部分答案,那么你将无法将其中一个指定为“正确”答案。我建议把它分成多个问题。e、 g.关于组合列表和填充词典的第一部分实际上是非常一般的Python问题,如果不是隐藏在一个被标记为专注于PsychoPy中特定TrialHandler类的问题中,可能会获得更广泛的受众。是的,谢谢。我试图听从你的建议,把问题一分为二!这里是第二个问题:我不太确定我是否理解你想要做什么。首先,组合列表只是两个列表的串联。这真的是你想要的吗?第二,请您详细说明“将PicList直接关联到CondList”是什么意思?假设每种类型有2个文件(a1.jpg、a2.jpg、n1.jpg,…),请解释如何处理这些图像。是的,我需要两个列表的集中度,A_n=im_A+im_n给出我想要的,但是如果我有更多的列表,我想寻求一种更简单的方法来组合这两个列表。2.如果我有一个“集中”列表a_n(a1.jpg,a2.jpg,n1.jpg,n2.jpg),我想将这个列表与列表imu a(a1.jpg,a2.jpg)关联起来,只是为了给python提供哪些图像在a_n列表中占主导地位的信息。我的想法是一个措辞,看起来像这样({a_n:im_a})分别({(a1.jpg,a2.jpg,n1.jpg,n2.jpg):(a1.jpg,a2.jpg)}),这当然不起作用。
d = len(elements) - 1
cond_list = list(chain.from_iterable([el]*d for el in elements))
# or
cond_list = sum(([el]*d for el in elements), [])