Python提取列表中字典并排序后如何输出无单引号的格式化内容
实现方案
方案1:给字典新增名称字段(最直观易用)
原有字典没有存储对应国家名称,无法直接输出Spain/Iran标识,先给每个字典补充name字段,再按规则排序输出即可:
# 补充name字段存储国家名 Iran = {'name': 'Iran', 'wins': 1, 'loses': 1, 'draws': 1, 'goal difference': 0, 'points': 4} Spain = {'name': 'Spain', 'wins': 1, 'loses': 0, 'draws': 2, 'goal difference': 2, 'points': 5} my_team = [Iran, Spain] # 原排序逻辑不变 sorted_team = sorted(my_team, key=lambda y: (y['points'], y['wins']), reverse=True) # 按格式输出,无单引号 for team in sorted_team: print(f"{team['name']} wins:{team['wins']} , loses:{team['loses']} , draws:{team['draws']} , goal difference:{team['goal difference']} , points:{team['points']}")
方案2:不修改原字典结构的实现
如果不想改动原有字典内容,可以通过id映射关联国家名和字典对象:
Iran = {'wins': 1, 'loses': 1, 'draws': 1, 'goal difference': 0, 'points': 4} Spain = {'wins': 1, 'loses': 0, 'draws': 2, 'goal difference': 2, 'points': 5} my_team = [Iran, Spain] # 建立字典对象和国家名的映射关系 name_mapping = {id(Iran): 'Iran', id(Spain): 'Spain'} # 排序 sorted_team = sorted(my_team, key=lambda y: (y['points'], y['wins']), reverse=True) # 输出 for team in sorted_team: team_name = name_mapping[id(team)] print(f"{team_name} wins:{team['wins']} , loses:{team['loses']} , draws:{team['draws']} , goal difference:{team['goal difference']} , points:{team['points']}")
两种方案运行后输出的结果都和要求的格式完全一致,没有额外单引号。
内容的提问来源于stack exchange,提问作者Hm tk
相关产品推荐
相关产品推荐

