为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿晨1998 2022-06-28 10:06:31
更新:好的,我对这个问题进行了彻底的检查。同样的问题,但现在我实现了自己的代码。首先,所有 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-ba-c现在,我不确定如何像使用数据框一样使用列表显示名称,尤其是当我每次在列表中循环一个新元组时它都是“随机的”,所以我不能只是硬-将其编码为 a、b、c、d 或 e,因为我不知道。我假设使用字典,但我不确定我会怎么做。
查看完整描述

4 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

named_list您可以使用您的压缩包data并为每个数据元素分配一个名称。


代码:


from string import ascii_lowercase



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


查看完整回答
反对 回复 2022-06-28
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

不确定这是否是您正在寻找的,但您可以将每个匹配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]))



查看完整回答
反对 回复 2022-06-28
?
手掌心

TA贡献1942条经验 获得超3个赞

您可以使用该函数chain.from_iterable()迭代每个子列表中的每个元素:


from itertools import chain

from string import ascii_lowercase


c = 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))


查看完整回答
反对 回复 2022-06-28
?
慕森卡

TA贡献1806条经验 获得超8个赞

尝试这个:


from string import ascii_lowercase

alphabet=0

for i in data:

   for j in i:   

       print(ascii_lowercase[alphabet] + " : " + str(j))

       alphabet += 1

我还有一些问题,比如如果您的列表长度超过字母大小怎么办?此外,如果您只想打印而不是存储,这个答案是有效的。


查看完整回答
反对 回复 2022-06-28
  • 4 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号