2011-12-24 2 views
-1

Входные данные:Python: сравнение списков по правилам

rules = (
    ("1|1": "A"), 
    ("2|1": "B"), 
    ("3|1": "C"), 
    ("2|2": "X") 
) 

pattern = [[1,2,3], [7,8]] 

мне нужна функция, чтобы сделать эту работу за результат ниже:

list1 = [[1,3,4], [7,9]] # result: B 
list2 = [[1,2,3], [7,9]] # result: C 
list3 = [[0,5,4], [8,5]] # result: None 
list4 = [[1,6,2], [7,8]] # result: X 
list5 = [[1,6,2,5], [7,8]] # result: Error 
+3

Можете ли вы немного прояснить алгоритм? Мне непонятно, что это такое. –

+0

Definetly Нужно больше информации о том, как это должно работать, и что это значит, чтобы помочь вам. – Oleiade

+0

Кроме того, я голосую за закрытие как слишком локализованное, потому что, как говорится в описании, этот вопрос «... имеет значение только для ... необычайно узкая ситуация, обычно не применимая к мировой аудитории Интернета ». –

ответ

3

Немного функциональной Python:

>>> rules = { 
    "1|1": "A", 
    "2|1": "B", 
    "3|1": "C", 
    "2|2": "X" 
} 
>>> pattern = [[1,2,3], [7,8]] 
>>> l = [[1,3,4], [7,9]] 
>>> diffs = '|'.join(map(lambda x: str(len(set(x[0]) & set(x[1]))), 
         zip(pattern, l))) 
>>> rules.get(diffs) 
'B' 

Работает так же для остальных списков. Обработка ошибок - это упражнение для вас :)