【问题标题】:Summing up certain data from nested dictionaries python从嵌套字典python中总结某些数据
【发布时间】:2018-04-18 12:59:31
【问题描述】:

所以我有以下代码

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) 无论如何我可以做到这一点吗?谢谢

【问题讨论】:

  • 你是怎么选电影的?
  • 使用 Pandas 可以轻松解决此类问题。这是一个快速教程:pandas.pydata.org/pandas-docs/stable/10min.html
  • @grovina 基本上是通过获取索引号。目前,我脑子里有这个想法,但想不出一种方法来应用它
  • 您说您有一个“头脑中的想法,但想不出一种方法来应用它”,这可能是因为在python中我们不应用“想法”,我们应用了函数。
  • @JoeT.Boka 我几乎是使用 Python 的初学者。所以不需要粗鲁的cmets,谢谢

标签: python dictionary nested


【解决方案1】:

你也可以试试这个:

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

【讨论】:

    【解决方案2】:

    假设您在列表中有电影编号(例如,您可以使用 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
    

    【讨论】:

      【解决方案3】:
      t= ['1','4','8']
      print reduce(lambda x,y:x+y, map(lambda x: Filme[x]['Preis'], t), 0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-24
        • 1970-01-01
        • 1970-01-01
        • 2018-04-20
        相关资源
        最近更新 更多