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