首页 > 解决方案 > 打印字典错误:列表索引必须是整数或切片,而不是元组

问题描述

我有这样的字典:

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

而且我无法理解错误的含义。

标签: python

解决方案


这里的问题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"]))

而且您可能应该将其重命名为sorted_team_items或其他名称。该代码也可以使用其他清理,但这超出了这个问题的范围。


推荐阅读