2014-10-10 104 views
-2

我有一個函數,其參數是兩個列表對。第二對的第二個元素也是對的列表,第一個目標是獲取list1,list2list3中每對的第一個元素。功能如下:如何訪問列表中對的第一個元素

def function(list1[(,)] , list2[(,list3[(,)])] 

像這樣的事情,對不起,它是部分在葡萄牙

sales_stats(

... [( 「兵馬俑」,800),( 「馬爾特」 (「阿維羅」,[(「Terra」,110),(「Marte」,227),(「Sol」,100),(「Urano」,100)],

... [ ,(「Sol」,137),(「Urano」,97)]),

...(「Agueda」,[(「Marte」 ,424),(「Terra」,91),(「Sol」,146),(「Urano」,227)]),

...(「Coimbra」,[(「Marte」,117) ,(「Sol」,116),(「Terra」,121),(「Urano」,97)]),

...(「Porto」,[(「Marte」,267)溶膠「,176),( 」浦野「,67),( 」泰拉「,66)])])

輸出是東西看起來像這樣: ( '馬爾特',1035,1399950)

+5

請告訴我們一個簡單的例子,以及預期中提取值。 – 2014-10-10 18:41:22

+1

對不起,我不明白你的代碼示例。函數參數列表通常不包含方括號或括號。 – Kevin 2014-10-10 18:42:25

+0

@Kevin我想​​象的是OP正試圖表示方法簽名合同。 – aruisdante 2014-10-10 18:43:24

回答

0

如果這是家庭作業,我會非常難過....

但是bas編輯您有限的描述,我想這是你所追求的:

def function(list_a, list_b): 
    ''' 
    :type list_a: [(val_a1, val_a2), ...] 
    :type list_b: [(val_b1, [(val_b2,val_b3),...]),...] 
    :rtype: [val_a1, ...], [val_b1, ...], [val_b2,...] 
    ''' 
    list_a_1 = [first for first, _second in list_a] # This one is easy, just do a simple list comp 

    list_b_1, list_b_2_temp = zip(*list_b) # This will split list_b into [value, ...], [[(value, value),..],...]. list_b_1 is already what we want 
    list_b_2 = [] 
    for items in list_b_2_temp: 
    # we strip off the first element of each tuple for each list, then extend the final list by them 
     list_b_2.extend(first for first, _second in items) 
    return list_a_1, list_b_1, list_b_2 

用法示例:

list_a = [(1,2),(3,4),(5,6)] 
list_b = [(1, [('1','2'),('3','4')]), (2,[('5','6'),('7','8')])] 
>>> function(list_a, list_b) 
([1, 3, 5], (1, 2), ['1', '3', '5', '7']) 
+0

@AndréLopes請注意,您可以使用itertools.chain使最終列表的構建更高效。from_iterable'和列表理解組合,但這是爲了確定您是否想要。如果此答案適合您,請通過大灰色複選標記接受它 – aruisdante 2014-10-10 18:58:56

相關問題