显示列表中每个元素的名称

更新:好的,我对这个问题进行了彻底的检查。同样的问题,但现在我实现了自己的代码。


首先,所有 a、b、c、d 和 e 都是数据框中的列,我将一次仅对 3 个组合进行排列,如下所示:


data = list(iter.permutations([a, b, c, d, e], 3)

然后,我执行以下操作以使用数据框中的特定行来查找图表上的单个点:


specData = list(iter.permutations(spec[a.name], spec[b.name], spec[c.name], 

                                  spec[d.name], spec[e.name], 3)

然后,由于我的排列,我将循环显示每个可能的图表。所有这些都适用于我的代码并正确显示它们。我省略了创建图表格式的不需要的部分,因为在这个问题中这些都不重要:


for i in range(len(data)):


    plt.scatter(data[i][0] - data[i][1], data[i][0] - data[I][2], edgecolors=‘b’)


    plt.scatter(specData[i][0] - specData[i][1], specData[i][0] - specData[i][2], 

                edgecolors=‘r’)

在我之前使用数据框的图表中,我能够通过像这样创建标签并逐个绘制它们来显示标签的名称:


    plt.xlabel(a.name + ‘-‘ + b.name)

    plt.ylabel(a.name + ‘-‘ + c.name)

上面标签的输出在图形的 x 和 y 标签上如下所示:


a-b

a-c

现在,我不确定如何像使用数据框一样使用列表显示名称,尤其是当我每次在列表中循环一个新元组时它都是“随机的”,所以我不能只是硬-将其编码为 a、b、c、d 或 e,因为我不知道。我假设使用字典,但我不确定我会怎么做。


阿晨1998
浏览 168回答 4
4回答

冉冉说

named_list您可以使用您的压缩包data并为每个数据元素分配一个名称。代码:from string import ascii_lowercasedef do():    data = [[(0, 1, 2), (3, 4, 5), (6, 7, 8)],            [(0, 1, 2), (6, 7, 8), (3, 4, 5)],            [(3, 4, 5), (6, 7, 8), (0, 1, 2)]]    featured_list = list(map(lambda x: list(zip(ascii_lowercase, x)), data))    for items in featured_list:        for item in items:            print(f"{item[0]}: {item[1]}")if __name__ == '__main__':    do()输出:a: (0, 1, 2)b: (3, 4, 5)c: (6, 7, 8)a: (0, 1, 2)b: (6, 7, 8)c: (3, 4, 5)a: (3, 4, 5)b: (6, 7, 8)c: (0, 1, 2)

阿波罗的战车

不确定这是否是您正在寻找的,但您可以将每个匹配tuple为 akey并根据需要添加值。IE:data = [[(0, 1, 2), (3, 4, 5), (6, 7, 8)],         [(0, 1, 2), (6, 7, 8), (3, 4, 5)],         [(3, 4, 5), (6, 7, 8), (0, 1, 2)]]dict1 = {(0, 1, 2): 'a',  (3, 4, 5): 'b',  (6, 7, 8): 'c'}for row in data:    print(', '.join(['%s:%s' % (dict1[elem], elem) for elem in row if elem in dict1]))

手掌心

您可以使用该函数chain.from_iterable()迭代每个子列表中的每个元素:from itertools import chainfrom string import ascii_lowercasec = chain.from_iterable(data)for i, j in zip(ascii_lowercase, c):    print(i, j, sep = ' : ')如果你想建立一个字典,你可以使用函数dict()和zip():c = chain.from_iterable(data)dct = dict(zip(ascii_lowercase, c))

慕森卡

尝试这个:from string import ascii_lowercasealphabet=0for i in data:   for j in i:          print(ascii_lowercase[alphabet] + " : " + str(j))       alphabet += 1我还有一些问题,比如如果您的列表长度超过字母大小怎么办?此外,如果您只想打印而不是存储,这个答案是有效的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python