【问题标题】:2D list python unable to get it right2D 列表 python 无法正确处理
【发布时间】:2021-08-29 11:24:12
【问题描述】:

我正在尝试以下代码,但是当我运行该函数时:

finder("001-987654-003")

什么都没有发生。出了什么问题?

def finder(lookupvalue):
    user_list = [
        ["Account number","Currency","Balance"],
        ["001-987654-003","USD",1300.72],
        ["001-919202-100","EUR",105.01],
        ["001-905700-100","EUR",305.00],
        ["001-908415-307","CHF",20804.98],
        ["011-974777-200","PLN",208.15],
        ["001-931654-001","USD",450.7]
    ]
    
    for row in user_list:
        if user_list[0][0]==lookupvalue:
            print("yes")

【问题讨论】:

  • 你用过字典吗?
  • 您应该根据 row 变量 - user_list[row][0] 为您的列表编制索引
  • @FilipMłynarski row不是索引,而是内部列表之一。所以它是row[0]

标签: python arrays list


【解决方案1】:

你必须使用row 而不是user_list

def finder(lookupvalue, lookuplist, col_index):
    for row in lookuplist:
        if row[0] == lookupvalue:
            print(row[col_index - 1])

finder("001-919202-100", user_list, 2)

这是因为如果您在 for 循环中使用 user_list[0][0],它将不断引用 "Account number",而 row[0] 将遍历不同的列表,查找帐号。

但正如其中一位 cmets 所说,字典可能更适合这项任务。

【讨论】:

    【解决方案2】:

    试试这个:

    user_list = [
            ["Account number", "Currency", "Balance"],
            ["001-987654-003", "USD", 1300.72],
            ["001-919202-100", "EUR", 105.01],
            ["001-905700-100", "EUR", 305.00],
            ["001-908415-307", "CHF", 20804.98],
            ["011-974777-200", "PLN", 208.15],
            ["001-931654-001", "USD", 450.7]
        ]
    
    def finder(lookupvalue, lookuplist, col_index):
        for row in user_list:
            if row[0] == lookupvalue:
                print(row[col_index-1])
                
                
    finder("001-919202-100", user_list, 2)
    

    输出:

    EUR
    

    【讨论】:

    • @pucktack 你可以试试这个
    • @pucktack,你说当类型 col_index =2 得到输出时:EUR,python 中的索引从零开始
    • @pucktack 如果这是正确的,请接受answer
    • 实际上,如果您想从列表中获取第二项 (EUR),索引为 1,0 为帐号,2 为余额。所以引用 2 然后减去 1 实际上是一个错误。
    • @user1740577 是的,但本质上他想要获得第二个元素(货币),而正确的方法是简单地使用实际的第二个索引1
    【解决方案3】:

    尝试使用字典:

    user_list = {
        "Account Number": ["001-987654-003", "001-919202-100", "001-905700-100"],
        "Currency": ["USD", "EUR", "EUR"],
        "Balance": [1300.72, 105.01, 305.00]
    }
    

    似乎更适合您的情况,因为您尝试存储不同的列表(我认为)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-14
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 2012-07-18
      相关资源
      最近更新 更多