2013-03-28 57 views
0

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

字典:

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]))) 
+0

代码示例会有帮助,因为我不知道你在说什么。 – brice 2013-03-28 10:48:20

+0

更新了代码 – user2101517 2013-03-28 10:54:28

+0

Thankyou,这有助于很多:) – brice 2013-03-28 10:57:43

回答

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 

你实际提供的代码示例不会是预期,如果你给它的空间分隔报价名称。

希望这会有所帮助。

+0

非常感谢你的帮助!这当然会使它更清楚,如果输入包含逗号,它是否可以以相同的方式工作? (例如air,amp,aia)再次感谢 – user2101517 2013-03-28 11:31:45

+0

,您可以通过使用're'模块来分割输入。例如,用'names = set(re.split(“[\ t。,] *”,user_input))替换'names = set(user_input.upper()。split())''看看[ (http://docs.python.org/3/library/re.html#re.split)了解更多信息。 – brice 2013-03-28 11:36:58

+0

还要注意,上面的解决方案在计算上很昂贵(通过每个股票价格清单),并且可能有更好的方法来做到这一点。 – brice 2013-03-28 11:42:39