我很难按价值来分类一本词典

2024-09-27 23:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道在这个主题上还有其他问题;但是,我没有成功地将这些答案应用到我的代码中。我需要帮助的是在我的第二个和第三个打印函数中对字典进行排序,该函数将按击键顺序对字典进行排序,击键顺序是字典代码中的中间值,例如[DH',6299]。我的代码如下:

def main():
    print('Rays Starters','\n')
    starters = {'DeJesus': ['DH', 6, 299],
                'Loney': ['1B', 4, 222],
                'Rivera': ['C', 9, 194],
                'Forythe': ['2B', 5, 304],
                'Souza Jr': ['RF', 2, 229],
                'Longoria': ['3B', 3, 282],
                'Cabrera': ['SS', 7, 214],
                'Kiermaier': ['CF', 1, 240],
                'Guyer': ['LF', 8, 275]}
for key, value in starters.items():
    print(key, value)
print('\n')

print("Today's lineup", '\n')
for key, value in (starters.items()):
    print('Batting {}: {} {}, current avg: {}'.format(value[1], value[0], key, value[2]))
print('\n')

print('Lineup change', '\n')
del starters['DeJesus']
del starters['Rivera']
starters2 = {'Wilson': ['C', 9, 152], 'Bechham': ['DH', 6, 200]}
starters.update(starters2)
for key, value in starters.items():
    print('Batting {}: {} {}, curent avg: {}'.format(value[1], value[0], key, value[2]))    

main()

作为参考,我的电流输出是:

Rays Starters 

Forythe ['2B', 5, 304]
Loney ['1B', 4, 222]
Longoria ['3B', 3, 282]
Kiermaier ['CF', 1, 240]
Guyer ['LF', 8, 275]
Rivera ['C', 9, 194]
DeJesus ['DH', 6, 299]
Cabrera ['SS', 7, 214]
Souza Jr ['RF', 2, 229]


Today's lineup 

Batting 5: 2B Forythe, curent avg: 304
Batting 4: 1B Loney, curent avg: 222
Batting 3: 3B Longoria, curent avg: 282
Batting 1: CF Kiermaier, curent avg: 240
Batting 8: LF Guyer, curent avg: 275
Batting 9: C Rivera, curent avg: 194
Batting 6: DH DeJesus, curent avg: 299
Batting 7: SS Cabrera, curent avg: 214
Batting 2: RF Souza Jr, curent avg: 229


Lineup change 

Batting 5: 2B Forythe, curent avg: 304
Batting 9: C Wilson, curent avg: 152
Batting 4: 1B Loney, curent avg: 222
Batting 3: 3B Longoria, curent avg: 282
Batting 1: CF Kiermaier, curent avg: 240
Batting 8: LF Guyer, curent avg: 275
Batting 6: DH Bechham, curent avg: 200
Batting 7: SS Cabrera, curent avg: 214
Batting 2: RF Souza Jr, curent avg: 229

Tags: keyvalueavgdhprintrfjrstarters
1条回答
网友
1楼 · 发布于 2024-09-27 23:26:37

sorted()接受一个参数key,这是一个返回要排序的值的函数。你知道吗

试试这个:

def key_func(item):
    value = item[1]
    order = value[1]
    return order
for key, value in sorted(starters.items(), key=key_func):
    ...

或者,更简单地说:

for key, value in sorted(starters.items(), key=lambda x: x[1][1]):
    ...

相关问题 更多 >

    热门问题