按字母顺序排列的元组

2024-05-17 08:09:55 发布

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

在python3中,我有一个如下编码的程序。它基本上接受用户的输入,并根据元组列表(交换数据)进行检查,然后输出一个信息列表。问题是,数据在输出时是按字母顺序排序的,这不是我想要的方式。我该怎么修?你知道吗

from shares import EXCHANGE_DATA
portfolio_str=input("Please list portfolio: ")
portfolio_str= portfolio_str.replace(' ','')
portfolio_str= portfolio_str.upper()
portfolio_list= portfolio_str.split(',')
print()
print('{:<6} {:<20} {:>8}'.format('Code', 'Name', 'Price'))
for code, share_name, share_value in EXCHANGE_DATA:
  if code in portfolio_list:
        print('{:<6} {:<20} {:>8.2f}'.format(code, share_name, share_value))

输入示例: GPG,HNZ,DIL,FRE

输出应如下所示:

Please list portfolio: GPG,HNZ,DIL,FRE

Code  Name                   Price
GPG   Guinnesspeat            2.32
HNZ   Heartland Nz            3.85
DIL   Diligent                5.30
FRE   Freightway              6.71

但我得到:

Please list portfolio: GPG,HNZ,DIL,FRE

Code   Name                    Price
DIL    Diligent                 5.30
FRE    Freightway               6.71
GPG    Guinnesspeat             2.32
HNZ    Heartland Nz             3.85

更新代码

from shares import EXCHANGE_DATA
portfolio_str=input("Please list portfolio: ")
portfolio_str= portfolio_str.replace(' ','')
portfolio_str= portfolio_str.upper()
portfolio_list= portfolio_str.split(',')
print()
print('{:<6} {:<20} {:>8}'.format('Code', 'Name', 'Price'))
EXCHANGE_DATA = {code:(share_name,share_value) for code, share_name, share_value in EXCHANGE_DATA}
for code in portfolio_list:
     share_name, share_value = EXCHANGE_DATA[code]
     print('{:<6} {:<20} {:>8.2f}'.format(code, share_name, share_value))

Tags: namesharedataexchangevaluecodegpglist
1条回答
网友
1楼 · 发布于 2024-05-17 08:09:55

一种方法是将EXCHANGE_DATA转换成字典,使用code作为键。然后你就可以像这样变换你的循环:

for code in portfolio_list:
    share_name, share_value = EXCHANGE_DATA[code]
    print('{:<6} {:<20} {:>8.2f}'.format(code, share_name, share_value))

相关问题 更多 >