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
而且我无法理解错误的含义。
解决方案
这里的问题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
或其他名称。该代码也可以使用其他清理,但这超出了这个问题的范围。
推荐阅读
- kubernetes - ClusterRole 存在且无法导入当前版本?
- python - 在没有得到“切片警告副本”的情况下移动列
- c# - 如何覆盖自定义用户控件中的文本样式?
- python - Winsorizing 不会改变最大值
- mysql - 将group by子句的结果存储到sql中不同的excel文件中
- sql-server - 如何将 SQL Server 视图同步到 Postgres 表?
- mysql - 我想使用 3 个表从 SQL 制作月度报告
- function - makefile中子shell中的变量扩展失败
- javascript - 当用户单击按钮然后转到其他页面时播放声音
- siddhi - 如何集成 WSO 2 流处理器和 Tibco EMS?