2016-11-14 2 views
0

Я работаю над функцией, где мне нужно подсчитать, сколько раз комбинация названия страны и типа произведения отображается вместе в значениях словаря и возвращает общее количество. Я думаю, что я рядом, но у меня проблемы.Подсчет двух значений вместе в словаре

Пример Словарь:

{'V':[("Self-Portrait",1500,20.0,30.0,"oil paint","Italy")], 
'B':[("Self-Portrait",1500,20.0,20.0,"oil paint","Italy")], 
'K':[("Self-Portrait-1",1500,10.0,20.0,"oil paint","Netherlands"),("Self-Portrait-2",1510,10.0,20.0,"oil paint","Netherlands"),("Self-Portrait-3",1505,10.0,20.0,"oil paint","USA")], 
'M':[("Self-Portrait-1",1800,20.0,15.0,"oil paint","USA"),("Self-Portrait-2",1801,10.0,30.0,"oil paint","France")] 
     } 

В вышеуказанном словаре, если я рассчитывал на количество раз «масляной краски» и «Италия появилась вместе в ценностях, которые он вернется бы

count_appearances(dictionary4(),'oil paint','Italy') 

#This should return "2" 

Это код, который у меня есть до сих пор. В настоящее время он возвращает Нет для подсчета, и я не уверен, почему

def count_media_in_country(db, media, country): 
    count = 0 
    for key in db: 
     for record in db[key]: 
      if media and country == True: 
       count += 1 
      elif media and country == False: 
       count += 0 
       return count 
+0

Как вы называете 'count_media_in_country()'? также 'return count' не должен находиться внутри цикла' for' – ettanany

ответ

1

Вот что вам нужно:

def count_media_in_country(db, media, country): 
    count = 0 
    for value in db.values(): 
     for record in value: 
      if record[4] == media and record[5] == country: 
       count += 1 
    return count # return statement should be after for loop (in this case) 

if media and country == True: фактически проверяет media и country строки не None и не пусты (вам не нужно это).

count += 0 ничего (очевидно) не делать

if statement == True: 
    # something 
elif statement == False: 
    # something 

лучше способ написать это:

if statement: 
    # something 
else: 
    # something 
+0

Спасибо за совет, и это решение работает хорошо – warrior4223

0
def count_media_in_country(db, media, country): 
    count = 0 
    for key in db: 
     for record in db[key]: 
      if media in record and country in record: 
       count += 1 
    return count 

Ваш elif блок возвращается преждевременно. Кроме того, вам необходимо проверить принадлежность списка для каждого элемента отдельно, используя ключевое слово in.

Смежные вопросы