【问题标题】:Mapping item in a list to a list of lists将列表中的项目映射到列表列表
【发布时间】:2018-12-17 03:46:35
【问题描述】:

我正在考虑一种将列表中的名称映射到列表列表中的分组索引项的有效方法。

假设我有这个分组:

g = [[0,1],[2]]

我也有这个清单:

names = ["canine", "dog", "feline"]

我想把映射后的名字按索引返回到分组中:

result = [["canine","dog"], ["feline"]]

我不完全确定如何做到这一点,甚至不知道如何有效地做到这一点。这是我到目前为止所拥有的,但它不起作用。

final = []
for j in range(len(names)):
    for item in g:
        for inner in item:
            res = []
            if inner == j:
                res.append(names[inner])
        final.append(res)
print(final)

任何提示将不胜感激。

【问题讨论】:

  • 如果您要对连续元素进行切片,使用g = [2, 1] 来指示子列表的长度会更有意义。

标签: python for-loop iteration


【解决方案1】:

我认为您可能想要循环遍历 g 而不是 names。没有理由遍历names,因为您将使用值g 对其进行索引。在这种情况下,似乎一个简单的列表推导可能更适合这种情况:

[[names[i] for i in sublist] for sublist in g]

【讨论】:

    【解决方案2】:

    您也可以使用maplambda 来实现您的最终输出:

    g = [[0, 1], [2]]
    
    names = ["canine", "dog", "feline"]
    
    result = [map(lambda i: names[i], sub_list) for sub_list in g]
    # Output: [['canine', 'dog'], ['feline']]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多