从嵌套字典python中总结某些数据

时间:2017-11-06 11:14:46

标签: python dictionary nested

所以我有以下代码

Filme = {'1': {'Titel': 'Titanic', 'Jahr': 1997, 'Wertung': 8, 'Preis': 30,
                               'Schauspielern': ["Adam Sandler", 'b', 'c']},
         '2': {'Titel': 'Pulp Fiction', 'Jahr': 1994, 'Wertung': 9, 'Preis': 40, 'Schauspielern': ['']},
         '3': {'Titel': 'Wings of Desire', 'Jahr': 1987, 'Wertung': 8, 'Preis': 40,
                               'Schauspielern': ['']},
         '4': {'Titel': 'London Has Fallen', 'Jahr': 2016, 'Wertung': 6, 'Preis': 20,
                               'Schauspielern': ['']},
         '5': {'Titel': 'Avatar', 'Jahr': 2009, 'Wertung': 8, 'Preis': 35, 'Schauspielern': ['']},
         '6': {'Titel': 'The Devil Wears Prada', 'Jahr': 2006, 'Wertung': 7, 'Preis': 20,
                               'Schauspielern': ['']},
         '7': {'Titel': 'Submarine', 'Jahr': 2010, 'Wertung': 7, 'Preis': 20, 'Schauspielern': ['']},
         '8': {'Titel': 'About Time', 'Jahr': 2013, 'Wertung': 8, 'Preis': 37, 'Schauspielern': ['']},
         '9': {'Titel': 'Love, Rosie', 'Jahr': 2014, 'Wertung': 7, 'Preis': 25, 'Schauspielern': ['']},
         '10': {'Titel': 'Me Before You', 'Jahr': 2016, 'Wertung': 9, 'Preis': 45,'Schauspielern': ['']}
         }

我要做的任务是通过选择不同的电影来计算总价格(使用的变量是“Preis”)。例如,如果我选择电影1,4和8,则输出应为87(30 + 20 + 37) 无论如何我能做到吗?感谢

3 个答案:

答案 0 :(得分:0)

t= ['1','4','8']
print reduce(lambda x,y:x+y, map(lambda x: Filme[x]['Preis'], t), 0)

答案 1 :(得分:0)

假设您在列表中有电影号码(例如,您可以使用input()获取它们),您可以迭代并累积它们。

price = 0
for movie_number in movie_numbers:
    if movie_number not in Filme:
        continue  # ignore invalid movie numbers

    price += Filme[movie_number].get('Preis', 0)  # price is 0 when no Preis is present

return price

答案 2 :(得分:0)

你也可以试试这个:

movies = [1,4,8]

def getTotalMoney(movies, Filme):
  return sum(Filme.get(str(i)).get("Preis") for i in movies)

print(getTotalMoney(movies, Filme))

结果是:

87