【问题标题】:Python find row position into matrixPython在矩阵中找到行位置
【发布时间】:2017-11-21 15:59:10
【问题描述】:

我需要帮助解决一个问题。我有一个类似上面示例的列表:

list = [[{'bu':'01-DAM-XNXX'}, 45, 60], [{'bu':'02-TAC-MWKKK'}, 80, 120], ...]

我需要根据字典的 'bu' 键的值找到行号。在这种情况下,“01-DAM-XNXX”为 1,“02-TAC-MWKKK”为 2,依此类推……

非常感谢!

【问题讨论】:

  • 行是什么意思?列表的第 n 个元素在第 n 行?还是dict值的前两个字母是行?
  • 对我来说,一行是列表的每个元素。例如 row1:[{'bu':'01-DAM-XNXX'}, 45, 60]
  • 当您在寻找没有前导数字的密钥时,“01-DAM-XNXX”开头的“01”是什么?
  • 对不起,我忘记写了。 ;-)

标签: python list indexing find


【解决方案1】:

Python 3

search_value = '02-TAC-MWKKK'
ind = (ind for ind, val in enumerate(list) if val[0]['bu'] == search_value).__next__()

Python 2

search_value = '02-TAC-MWKKK'
ind = (ind for ind, val in enumerate(list) if val[0]['bu'] == search_value).next()

另外,正如@mrCarnivore 所述,请不要将变量命名为list

【讨论】:

    【解决方案2】:

    我想我有它:

    element = '01-DAM-XNXX'
    position = raw_list.index([row for row in raw_list if row[0]['bu'] == element][0])
    

    【讨论】:

    • 我强烈建议不要在 python 中命名变量list。这可能会导致各种问题!
    • 是的,我知道。已编辑。谢谢。
    【解决方案3】:

    你可以使用一个简单的函数:

    def searchList(term,searchlist):
        for row in range(len(searchlist)):
            if term in searchlist[row][0]['bu']:
                return row
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      相关资源
      最近更新 更多