【问题标题】:alphabetically enumerate file lists with attributes按字母顺序枚举具有属性的文件列表
【发布时间】:2019-05-27 17:36:39
【问题描述】:

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

问题是一个 现在我正在使用 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

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

【问题讨论】:

  • 但是,.name 不是str 的属性。您能给我们提供更多有关它的信息吗?

标签: python python-3.x enumeration


【解决方案1】:

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

【讨论】:

  • 是的,只剩下一个问题是“lista”有一个“.name”变量(例如),而“listb”没有,所以我想枚举“x.name”。 "lista" 的 name" 和 "listb" 的 "x"
  • 您忘记了括号[] Austin,而且您的列表是字符串列表,没有@Liam 存在name 属性请更新您的问题
  • 正如@DeveshKumarSingh 所说,请更新您的问题以显示“.name”变量的确切含义。
  • 我试图让它简单而不是太详细,我想那是错误的举动。我编辑了我的问题更准确
  • 有什么问题?现在是alist.name + listb
【解决方案2】:

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

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  

【讨论】:

  • 或者只是for elt, content in enumerate(sorted(lista + listb)):
猜你喜欢
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
相关资源
最近更新 更多