gpt4 book ai didi

python - 遍历字典以按值的顺序显示键和值

转载 作者:太空狗 更新时间:2023-10-30 01:54:08 25 4
gpt4 key购买 nike

我正在尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com