【问题标题】:Get inner-most elements from triple nested list Python从三重嵌套列表Python中获取最里面的元素
【发布时间】:2019-01-08 12:52:34
【问题描述】:

我有清单

players = [[['QB1',7000,20],['RB1',4500,12],['RB2',3800,11]], [['QB1',7000,20],['RB2',3800,11],['RB1',4500,12]]]

如何获取每个最内层列表的第一个元素('QB1'、'RB1' 和 'RB2' 从第一个“辅助”列表中,如果你愿意的话,列表)来检查它们是否相同,但是无序标签作为另一个二级列表中的标签(在这种情况下,它们是因为两个二级列表都包含'QB1','RB1'和'RB2')?

编辑:

我想要的是[['QB1','RB1','RB2'],['QB1','RB2','RB1']]。为了我的目的,我想通过某种方式确定这些是同一个列表。

【问题讨论】:

  • 你想要的输出是什么? inner-most elements 是什么意思?
  • @mehrdad-pedramfar 好问题,我应该更清楚 - 我已经编辑了原始问题以包含我想要的输出。

标签: python list indexing list-comprehension nested-lists


【解决方案1】:

你可以这样做:

output = [[i[0] for i in a] for a in players]

output 将是这样的:

[['QB1', 'RB1', 'RB2'], ['QB1', 'RB2', 'RB1']]

【讨论】:

  • 谢谢,我实际上一直在尝试[i[0] for i in a for a in players],我明白为什么你的解决方案与我的不同
【解决方案2】:

您可以使用递归搜索并获取每个列表或整个列表的第一个元素

players = [[['QB1',7000,20],['RB1',4500,12],['RB2',3800,11]],[['QB1',7000,20],['RB2',3800,11],['RB1',4500,12]]]
def retrive_first(lst):
    for item in lst:
        if type(item) == list:
            retrive_first(item)
        else:
            print "returning ---> ", lst[0]
            return lst[0]

print retrive_first(players)

【讨论】:

    【解决方案3】:

    你也可以试试这个:

    from operator import itemgetter
    [list(map(itemgetter(0), player)) for player in players]
    

    【讨论】:

      【解决方案4】:

      做:

      print(list(zip(players))[0])
      

      或者:

      print([i[0] for i in players])
      

      【讨论】:

      • 第一个返回([['QB1', 7000, 20], ['RB1', 4500, 12], ['RB2', 3800, 11]],),第二个返回[['QB1', 7000, 20], ['QB1', 7000, 20]]
      猜你喜欢
      • 2015-10-15
      • 1970-01-01
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 2023-03-22
      相关资源
      最近更新 更多