2014-03-26 56 views
1

我有一個嵌套列表,我想檢查是否i包含在我的列表的最底層(i是一個「子列表」中兩個元素的第一個)。嵌套列表查詢通配符

1)有沒有直接的方法來做到這一點?

2)我試過如下:

for i in randomlist: 
    if [i,randomlist.count(i)] in list1: 

有沒有辦法來取代randomlist.count(i)用通配符?我試過*,%,...,,但其中沒有一個很好。有任何想法嗎? 在此先感謝!

+1

您能不能給例如輸入和輸出的? – user3

+1

你可以添加一個隨機列表和期望輸出的例子嗎?很難理解你需要什麼 – Elisha

+0

輸入顯示嵌套列表中包含數字和它們在子列表中的計數:[[86,4],[67,1],[89,1],...] 輸出:我需要知道一個具有它的計數的數字是否已經在列表中(爲了不再次添加它),但在for循環期間計數未知 – user3017048

回答

1

我想你想要的是:

if any(l[0] == i for l in list1): 

這將在每個子列表,這是有效地與具有外卡第二個元素檢查的第一項。

+1

該語法是非法的。我想你想刪除'in'。 – iCodez

+0

我肯定是的,是的;謝謝 – jonrsharpe

+0

爲什麼它是非法的語法?我使用和不使用'in'運行程序,沒有它的情況下Python顯示語法錯誤。 – user3017048

1

看來,這是實際的問題:

輸入顯示的子列表與數字和他們的計數嵌套列表: [86,4],[67,1],[89,1] ,...]輸出:我需要知道 數量與它的計數是否已在列表中(爲了不增加它 第二次),但伯爵期間是未知的for循環

有兩種方法可以解決這個問題。首先,如果列表中沒有重複的,簡單地將其轉換爲一個字典:

numbers = dict([[86,4],[67,1],[89,1]]) 

現在每個數字是關鍵,而計算價值。接下來,如果你想知道一個數字是不在字典,你有很多方法可以做到這一點:

# Fetch the number 
try: 
    count = numbers[14] 
except KeyError: 
    print('{} does not exist'.format(14)) 

# Another way to write the above is: 

count = numbers.get(14) 
if not count: 
    print('{} does not exist'.format(14)) 

# From a list of a numbers, add them only if they don't 
# exist in the dictionary: 

for i in list_of_numbers: 
    if i not in numbers.keys(): 
     numbers[i] = some_value 

如果目前已經在原始列表複製,你仍然可以把它轉換成一個字典,而是你需要做一些額外的工作,如果你想保留的所有值的數字:

from collections import defaultdict 

numbers = defaultdict(list) 

for key,value in original_list: 
    numbers[key].append(value) 

現在,如果您有重複的號碼,所有的值存儲在列表中。您仍然可以按照相同的邏輯:

for i in new_numbers: 
    numbers[i].append(new_value) 

除了現在如果該號碼已經存在,則new_value只會被添加到現有的值列表。

最後,如果你想要做的就是添加到列表中,如果第一個號碼不存在:

numbers = set(i[0] for i in original_list) 

for i in new_numbers: 
    if i not in numbers: 
     original_list += [i, some_value]