使用相同的键减去多个词典的值

时间:2016-12-07 11:29:24

标签: python python-3.x dictionary

我有一个带字典的数据库(python的tinydb)。这些词典中的每一个都包含特定纪元时间的数据:

字典1 = {'epochtime'= 1480417585,'apple'= 1.25,'melon'= 2.50}

字典2 = {'epochtime'= 1480422580,'apple'= 1.40,'melon'= 2.30}

字典3 = ...

我想比较每个时期的每个水果的价值变化:

  • 词典1和2之间每种水果的价格变化是什么?
  • 词典2和3之间每种水果的价格变化是什么?
  • ...

显然我需要按时间顺序减去这些值(高纪元时间 - 低纪元时间,低纪元时间 - 甚至更低的纪元时间等)。

我确信有些蟒蛇大师可以写几行,但我现在完全被打扰了!

我正在使用Python 3,但Python 2.7的建议也非常有用。

1 个答案:

答案 0 :(得分:0)

您的第一步是按纪录时间对参赛作品进行排序。假设他们在列表entries中,

sorted_entries = sorted(entries, key=lambda e: e['epochtime'])

key参数是一个函数,它将每个条目映射到一个值,该值指定集合的​​排序顺序。因此,sorted_entries现在将按升序纪元时间戳包含所有条目。

要实际获得结果,您可以成对迭代:

for i in range(len(sorted_entries)-1):
    first, second = sorted_entries[i], sorted_entries[i+1]

    # Do whatever calcs you need
    print("Apple change: {}".format(second['apple'] - first['apple']))