python - 在 python 中创建元组的等级

标签 python tuples rank

我该怎么做? 从这个样本开始

         Id,  Id2    CCC
        [  (A123 A120 '2011-03'), 
  LL=     (A133 A123 '2011-03'),
         ( D123 D120 '2011-04'),
          (D140 D123 '2011-04'),]

我试图得到这个,为每个元组添加等级。

     [(A123, A120 ,'2011-03',1), 
  LL=     (A133, A123, '2011-03',2),
         ( D123, D120, '2011-04',3),
          (D140, D123, '2011-04',4),]


    for i in range(len(LL)):
        RowId = i+1
        LL.append(RowId)   

我得到这样的东西:

        [(A123, A120 ,'2011-03'), 
  LL=     (A133, A123, '2011-03),
         ( D123, D120, '2011-04),
          (D140, D123, '2011-04),1,2,3,4]

最佳答案

import pprint
LL= [ ('A123', 'A120', '2011-03'),
      ('A133', 'A123', '2011-03'),
      ('D123', 'D120', '2011-04'),
      ('D140', 'D123', '2011-04'),]
LL = [row+(i,) for i,row in enumerate(LL,1)]
pprint.pprint(LL)

产量

[('A123', 'A120', '2011-03', 1),
 ('A133', 'A123', '2011-03', 2),
 ('D123', 'D120', '2011-04', 3),
 ('D140', 'D123', '2011-04', 4)]

这里有一些解释:

我们从 LL 开始,定义如下:

In [28]: LL
Out[28]: 
[('A123', 'A120', '2011-03'),
 ('A133', 'A123', '2011-03'),
 ('D123', 'D120', '2011-04'),
 ('D140', 'D123', '2011-04')]

第一个技巧是使用 enumerate :

In [30]: list(enumerate(LL))
Out[30]: 
[(0, ('A123', 'A120', '2011-03')),
 (1, ('A133', 'A123', '2011-03')),
 (2, ('D123', 'D120', '2011-04')),
 (3, ('D140', 'D123', '2011-04'))]

这与您想要的很接近,只是“排名”从 0 开始计数,并且位于行的前面而不是末尾。我们可以使用 enumerate(LL,1) 告诉 enumerate 从 1 开始计数,我们可以使用 list comprehension 将排名放在行的末尾:

In [31]: [row+(i,) for i,row in enumerate(LL,1)]
Out[31]: 
[('A123', 'A120', '2011-03', 1),
 ('A133', 'A123', '2011-03', 2),
 ('D123', 'D120', '2011-04', 3),
 ('D140', 'D123', '2011-04', 4)]

在列表理解中,row 是一个元组,如 ('A123', 'A120', '2011-03'), row+(i,) 是元组的总和:

In [32]: ('A123', 'A120', '2011-03')+(1,)
Out[32]: ('A123', 'A120', '2011-03', 1)

这就是列表理解的每一行的构造方式。

关于python - 在 python 中创建元组的等级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780983/

相关文章:

python在多维字典中使用函数

python - 根据输入,在列表上使用 tuple() 不会返回相同的元组

sql - Oracle SQL - 如何使用 RANK() 或 DENSE_RANK() 和 ROW_NUMBER() 分析函数获取不同的行?

python - Pandas 等级法中的力增量

swift - 如何在 Swift 中按数组计数对 Firebase NSDictionary 项进行分组?

python - Groupby 并在 pandas 中将值(value)抵消一年

python - 如何创建与网格坐标一起使用的字母列表? (即 a、b、...、z、aa、bb、...、zz、aaa 等)

python - 使用列名获取列值

methods - 对可变结构参数的元组赋值

c# - 迭代元组中的项目