打印字典错误:列表索引必须是整数或切片,而不是元组

时间:2019-05-07 15:30:39

标签: python

我有这样的字典:

team_dict = {
    'Iran': {
        'wins':ir_win,
        'loses':ir_lose,
        'draws':ir_draws,
        'goal difference':ir_goal,
        'points':ir_score
    },
    'Spain': {
        'wins':sp_win,
        'loses':sp_lose,
        'draws':sp_draws,
        'goal difference':sp_goal,
        'points':sp_score
    },
    'Portugal': {
        'wins':po_win,
        'loses':po_lose,
        'draws':po_draws,
        'goal difference':po_goal,
        'points':po_score
    },
    'Morocco': {
        'wins':ma_win,
        'loses':ma_lose,
        'draws':ma_draws,
        'goal difference':ma_goal,
        'points':ma_score
    }
}

然后我对其进行了排序:

sorted_team_dict = sorted(
    team_dict.items(),
    key = lambda x: (-x[1].get('points'), -x[1].get('wins'), x[1].get('keys')
    )
)

我要打印排序依据:

for item in sorted_team_dict:
    print(
        "%s  wins:%i , loses:%i , draws:%i , goal difference:%i , points:%i" % (
            sorted_team_dict[item]["keys"],
            sorted_team_dict[item]["wins"],
            sorted_team_dict[item]["loses"],
            sorted_team_dict[item]["draws"],
            sorted_team_dict[item]["goal difference"],
            sorted_team_dict[item]["points"]
        )
    )

但我遇到以下错误:

list indices must be integers or slices, not tuple

我无法理解错误的含义。

1 个答案:

答案 0 :(得分:1)

这里的问题是:class不是字典,而是一个元组列表。因此,您将像这样遍历它:

sorted_team_dict

您可能应该将其重命名为for key, value in sorted_team_dict: print("%s wins:%i , loses:%i , draws:%i , goal difference:%i , points:%i" %(key,value["wins"],value["loses"],value["draws"],value["goal difference"],value["points"])) 或其他名称。该代码也可以使用其他清理方法,但这超出了此问题的范围。