更多pythonic /更高级别/高级操作挑战

时间:2014-11-25 19:37:58

标签: python sum reduce

纯粹是出于好奇心的缘故:

假设:

data = [
  {
    'quantity': Decimal(10),
    'price': Decimal(1.25)
  },
  ...
]

def func(data):
  quantity = Decimal()
  value = Decimal()

  for item in data:
    quantity += item['quantity']
    value += item['quantity'] * item['price']

  return quantity, value

问题

func的目的是在data

中返回数量和值

实现相同结果还有哪些其他方法?

2 个答案:

答案 0 :(得分:1)

相同的想法,但使用迭代

def fun(data):
    tons = sum(item['tons'] for item in data)
    value = sum(item['tons']*item['price'] for item in data)
    return tons, value

答案 1 :(得分:0)

这个怎么样:

data = [{'quantity': 10.0,'price': 1.25},{'quantity': 8.0,'price': 2.0}]

(quantity, value) = [sum(x) for x in zip(*[(x['quantity'],x['price']*x['quantity']) for x in data])]

# quantity = 18 and value = 28.5