作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 for
循环遍历字典,以按值元素之一(击球顺序号)的顺序显示键和值。
我可以按预期格式打印键和值,但我不知道如何以正确的击球顺序获得这些行。
我需要在 for 循环中使用逻辑来完成此任务,并且不使用 lambda 或函数。这是我目前所拥有的:
print ('Rays starters' + "\n")
rays_starters = {
'DeJesus' : ['DH', 6, 299],
'Loney' : ['1B', 4, 222],
'Rivera' : ['C', 9, 194],
'Forsythe' : ['2B', 5, 304],
'Souza Jr' : ['RF', 2, 229],
'Longoria' : ['3B', 3, 282],
'Cabrera' : ['SS', 7, 214],
'Kiermaier' : ['CF', 1, 240],
'Guyer' : ['LF', 8, 274] }
for player in rays_starters:
print (player + str(rays_starters[player]))
print ('\n' + 'Today\'s lineup' + '\n')
for player in rays_starters:
batting_order = rays_starters.get(player)
print('Batting ' + str(batting_order[1]) + ' : ' + str(batting_order[0]) + ' ' + player + ' ,current avg: ' + str(batting_order[2]))
输出应该是这样的:
Rays starters
DeJesus ['DH', 6, 299]
Loney ['1B', 4, 222]
Rivera ['C', 9, 194]
Forsythe ['2B', 5, 304]
Souza Jr ['RF', 2, 229]
Longoria ['3B', 3, 282]
Cabrera ['SS', 7, 214]
Kiermaier ['CF', 1, 240]
Guyer ['LF', 8, 274]
Today's lineup
Batting 1 : CF Kiermaier ,current avg: 240
Batting 2 : RF Souza Jr ,current avg: 229
Batting 3 : 3B Longoria ,current avg: 282
Batting 4 : 1B Loney ,current avg: 222
Batting 5 : 2B Forsythe ,current avg: 304
Batting 6 : DH DeJesus ,current avg: 299
Batting 7 : SS Cabrera ,current avg: 214
Batting 8 : LF Guyer ,current avg: 274
Batting 9 : C Rivera ,current avg: 194
我的输出实际上看起来确实像这样,除了击球顺序是乱序的。请帮助我走上正轨并记住我正在努力学习,因此欢迎任何有益的批评!
最佳答案
这是一种有效的方法,因为我们知道将有 9 个击球手。
lineup = [None] * 9
for player, stats in rays_starters.items():
lineup[stats[1]-1] = player, stats
print ('\nToday\'s lineup\n')
for player, batting_order in lineup:
print('Batting ' + str(batting_order[1]) + ' : ' + str(batting_order[0]) + ' ' + player + ' ,current avg: ' + str(batting_order[2]))
我们所做的只是初始化一个包含 9 个元素的数组,并使用击球顺序将球员和统计数据作为元组映射到正确的数组索引。然后我们遍历播放器数组和统计元组,并打印所需的格式化输出。这是 O(n)。
这个概念基本来源于Radix sort ,或者更具体地说,一个非常简单的例子 Counting sort其中所有频率均为 1,“关键函数”只是从击球顺序中减去 1 以获得数组索引。
正如@PadraicCunningham 在评论中指出的那样,理论上这可以通过使用 len
函数用于任意数量的击球手。
关于python - 遍历字典以按值的顺序显示键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30582191/
我是一名优秀的程序员,十分优秀!