2012-03-12 30 views
1

我正在使用CSV模塊將雅虎的股票行情拉入名爲元組。如何將ID屬性添加到CSV文件中的每個命名元組?

YahooQuote = collections.namedtuple(
    'YahooQuote', 'date, open, high, low, close, volume, adj_close') 

def prices(ticker): 
    # make url given ticker 
    csvfile = urllib2.urlopen(url) 
    return map(YahooQuote._make, csv.reader(csvfile)) 

雅虎的股票報價csv格式不包括股票代碼。如果我調整了我的命名元組類以包含ticker屬性,那麼我將如何修改map表達式以使它爲每個命名的元組實例添加ticker參數的值?

回答

2

我在基因上無法理解map中的代碼,因此我只是將map(f,i)轉換爲「[f(x)for x in i」),所以我不必:

return [YahooQuote._make(x) for x in csv.reader(csvfile)] 

那麼它是一個簡單的事情,股票代碼添加到由csv.reader返回列表的末尾:

YahooQuote = collections.namedtuple(
    'YahooQuote', 'date, open, high, low, close, volume, adj_close, ticker') 

def prices(ticker): 
    # make url given ticker 
    ticker_list = [ticker] 
    csvfile = urllib2.urlopen(url) 
    return [YahooQuote._make(x + ticker_list) for x in csv.reader(csvfile)] 
+0

美麗。我也寧願使用列表理解。我愚蠢的做法太貼近'namedtuple'文檔。 – MikeRand 2012-03-12 03:43:54

相關問題