0

在 python 3 中,我有一行要求输入,然后将在导入的字典中查找,然后列出出现在字典中的所有输入。我的问题是当我运行代码并输入时,它只会返回我输入的最后一个单词。例如字典包含 (AIR, AMA),如果我输入 (AIR, AMA) 它只会返回 AMA。任何解决此问题的信息都会非常有帮助!

词典:

EXCHANGE_DATA = [('AIA', 'Auckair', 1.50),
                 ('AIR', 'Airnz', 5.60),
                 ('AMP', 'Amp',3.22), 

编码:

import shares
a=input("Please input")
s1 = a.replace(' ' , "")
print ('Please list portfolio: ' + a)
print (" ")
n=["Code", "Name", "Price"]
print ('{0: <6}'.format(n[0]) + '{0:<20}'.format(n[1]) + '{0:>8}'.format(n[2]))
z = shares.EXCHANGE_DATA[0:][0]
b=s1.upper()
c=b.split()
f=shares.EXCHANGE_DATA
def find(f, a):
    return [s for s in f if a.upper() in s]
x= (find(f, str(a)))
toDisplay = []
a = a.split()
for i in a:
    temp = find(f, i)
    if(temp):
        toDisplay.append(temp)
for i in toDisplay:
    print ('{0: <6}'.format(i[0][0]) + '{0:<20}'.format(i[0][1]) + ("{0:>8.2f}".format(i[0][2])))
4

1 回答 1

1

好的,代码似乎有些混乱。这是一个更简单的版本,似乎可以满足您的要求:

#!/usr/bin/env python3

EXCHANGE_DATA = [('AIA', 'Auckair', 1.50),
                 ('AIR', 'Airnz', 5.60),
                 ('AMP', 'Amp',3.22)]

user_input = input("Please Specify Shares: ")

names = set(user_input.upper().split())

print ('Listing the following shares: ' + str(names))
print (" ")

# Print header
n=["Code", "Name", "Price"]
print ('{0: <6}{1:<20}{2:>8}'.format(n[0],n[1],n[2]))

#print data
for i in [data for data in EXCHANGE_DATA if data[0] in names]:
  print ('{0: <6}{1:<20}{2:>8}'.format(i[0],i[1],i[2]))

这是一个使用示例:

➤ python3 program.py 
Please Specify Shares: air amp
Listing the following shares: {'AMP', 'AIR'}

Code  Name                   Price
AIR   Airnz                    5.6
AMP   Amp                     3.22

如果您给它提供了空格分隔的引号名称,那么您提供的代码示例实际上会执行预期的操作。

希望这可以帮助。

于 2013-03-28T11:25:39.987 回答