按字母顺序枚举具有属性的文件列表

时间:2019-05-27 17:36:39

标签: python python-3.x enumeration

我正在尝试按字母顺序列举两个列表。

合一 现在,我正在使用zip进行以下操作:

lista = ['A', 'B', 'E', 'R']
listb = ['C', 'D', 'F', 'G']

for elt, (contenta, contentb) in enumerate(zip(lista, listb)):
    print('[{}] {}'.center(79).format(str(elt), contenta.name))
    print('[{}] {}'.center(79).format(str(elt), contentb))

现在的问题是lista有一个“ .name”变量,这就是我要打印的内容,但是listb没有,我想直接打印listb(当然lista和listb仅用作示例) )

所以我想得到的是:

                                    [0] A                                    
                                    [1] B                                    
                                    [1] C                                    
                                    [2] D                                    
                                    [3] E                                    
                                    [4] F   
                                    [5] G  
                                    [6] R

但是我得到的是:

                                    [0] A                                    
                                    [0] C                                    
                                    [1] B                                    
                                    [1] D                                    
                                    [2] E                                    
                                    [2] F   
                                    [3] R  
                                    [3] G

我不确定该如何解决?无论如何,要在保持数量一致的同时对两个列表进行排序和枚举?并同时按字母顺序排序?

2 个答案:

答案 0 :(得分:3)

lista + listbenumerate排序:

lista = ['A', 'B', 'E', 'R']
listb = ['C', 'D', 'F', 'G']

for i, x in enumerate(sorted(lista + listb)):
    print(i, x)

# 0 A
# 1 B
# 2 C
# 3 D
# 4 E
# 5 F
# 6 G
# 7 R

答案 1 :(得分:1)

因为您使用lista,所以它在listbzip的元素之间同时处理。
因此,我建议先将一个列表制成一个列表,然后按字母顺序排序。

lista = ['A', 'B', 'E', 'R']
listb = ['C', 'D', 'F', 'G']

listc = lista + listb
listc.sort()

for elt, content in enumerate(listc):
    print('[{}] {}'.center(79).format(str(elt), content))

结果:

                                    [0] A                                    
                                    [1] B                                    
                                    [2] C                                    
                                    [3] D                                    
                                    [4] E                                    
                                    [5] F                                    
                                    [6] G                                    
                                    [7] R