2013-04-13 103 views
1

值我有類別尋找具有最高等級

Rank Fruits:  Vegetable: Years: 
1  Apple  Lettuce  1900-1909  
2  Pineapple Carrot  1900-1909 
3  Orange  Potato  1900-1909 
4  Banana  Beans   1900-1909 
Rank Fruits:  Vegetable: Years: 
1  Banana  Carrot  1910-1919  
2  Orange  Potato  1910-1919 
3  Apple  Beans   1910-1919 
4  Pineapple Lettuce  1910-1919 

這是我上面給出的數據。我想知道什麼時候水果香蕉是最受歡迎的(又名何時最接近1)。我還需要找到何時胡蘿蔔最受歡迎。

例如,我需要它來顯示胡蘿蔔的結果是1910-1919和香蕉是1910-1919。

我一直在搞這個好幾個小時。我試圖把它們放到集合中,並用鍵和值進行配置,但我沒有做過任何工作。我真的很感謝幫助。謝謝!

def getHighRank(data): 
    nameSet=() 
    nameList=[] 
    for names in data: 
     nameList.append[1] 
     nameList.append[2] 

這就是我到目前爲止。我嘗試將水果和蔬菜放在一張單子上。我正在考慮把它轉換成一套,但是我現在還不知道該怎麼做。

+3

請分享你所擁有的,這樣我們就可以糾正你的錯誤。沒有人會完全爲您提供解決方案。 – ronak

+0

這兩個單獨的文件? – jamylak

+0

不是兩個單獨的文件全部1個文件,虐待打印我到目前爲止已有一秒plz – user2105660

回答

1

以下是如何獲得"Carrot"的結果。您應該能夠從那裏進行:

with open('filename') as f: 
    print min(row.split() for row in f if row[:1].isdigit() 
             and 'Carrot' in row)[3] 
# prints: 1910-1919 
+2

這可能會混淆OP如果你看他的起始代碼 – jamylak

+0

阿門哈哈我不明白這一點XD – user2105660

+2

@jamylak - 這很可能是真實的,但我們不是在這裏學習新的東西:) – root

2
>>> d = {} 
>>> with open('test.txt') as f: 
     print f.read() # shows the file structure 


Rank Fruits:  Vegetable: Years: 
1  Apple  Lettuce  1900-1909  
2  Pineapple Carrot  1900-1909 
3  Orange  Potato  1900-1909 
4  Banana  Beans   1900-1909 
Rank Fruits:  Vegetable: Years: 
1  Banana  Carrot  1910-1919  
2  Orange  Potato  1910-1919 
3  Apple  Beans   1910-1919 
4  Pineapple Lettuce  1910-1919 
>>> with open('test.txt') as f: 
     for line in f: 
      try: 
       rank, fruit, vegetable, year = line.split() 
       for k in (fruit, vegetable): # for both the fruit and veg 
        t = (rank, year) # tuple of rank and year 
        d[k] = min(d.get(k, t), t) # set it to the min (rank, year) 
      except: # skip headers 
       pass 


>>> d['Apple'] # fast lookup 
('1', '1900-1909') 
>>> d['Apple'][1] 
'1900-1909' 
>>> d['Carrot'][1] 
'1910-1919' 
>>> d['Banana'][1] 
'1910-1919'