Python在列表中找到某些列不重要的项目的索引

时间:2019-02-04 14:06:36

标签: python list

我在python中有一个列表,类似于以下示例: a = [[1,2,'aaa'] , [3,4,'nnnn']

如何仅说[1,2,*]来表示[1,2,'aaa']的索引,其中*表示不重要?换句话说,我要获取第一列为1且第二列为2且第三列的值不重要的项目的索引。

3 个答案:

答案 0 :(得分:2)

您可以使用extended iterable unpacking

a = [[1, 2, 'aaa'], [3, 4, 'nnnn']]

indices = [i for i, (first, second, *_) in enumerate(a) if (first, second) == (1, 2)]
print(indices)

输出

[0]

答案 1 :(得分:2)

您可以使用operator.itemgetter作为扩展解决方案:

from operator import itemgetter

a = [[1,2,'aaa'] , [3,4,'nnnn']]
getter = itemgetter(0, 1)  # get first and second items
indices = [idx for idx, item in enumerate(a) if getter(item) == (1, 2)]  # [0]

答案 2 :(得分:0)

一个简单的循环如何?

 async getAssignmentsOfTable(tableId, date = null) {
   let stmt =
      `SELECT * 
       FROM assignment a
       WHERE a.dining_table_id = $1` + (date?' AND a.date = $2':'');
    const params = date?[tableId, date]:[tableId];

    const result = await this.db.query(stmt, params);

    return result.rows.map(row => {
        return new Assignment(
          row.id,
          row.dining_table_id,
          row.guest_group_id,
          row.date,
          row.time
        );
    });
}