我想用新变量重新排列字典,而新变量是用现有变量新定义的。例如,
security_info = [{'date': '19.04.15', 'price': 785000, 'trade': 79620},
{'date': '19.04.16', 'price': 785000, 'trade': 68203},
{'date': '19.04.17', 'price': 754000, 'trade': 165929},
{'date': '19.04.18', 'price': 779000, 'trade': 94462},
{'date': '19.04.19', 'price': 770000, 'trade': 76814},
{'date': '19.04.22', 'price': 774000, 'trade': 58079},
{'date': '19.04.23', 'price': 775000, 'trade': 79128},
{'date': '19.04.24', 'price': 771000, 'trade': 61650},
{'date': '19.04.25', 'price': 757000, 'trade': 111805},
{'date': '19.04.26', 'price': 764000, 'trade': 68237}]
我想通过“净回报”重新排列此列表,“净回报”由“今天的价格/昨天的价格* 100”(当然不存在首个日期的“净回报”)。但是我不想通过添加新的键和值来解决此问题。
谢谢。
我应该通过发表一些评论作为开头:
但是,如果您想基于净收益对值进行排序,并且列表当前按日期排序(如您的示例中所示,那么类似的方法可能会起作用:
def net_return(entry):
i = security_info.index(entry)
if i>0:
return security_info[i]['price']/security_info[i-1]['price']
else:
return -1
sorted(security_info, key=net_return)
这将返回以下列表:
[{'date': '19.04.15', 'price': 785000, 'trade': 79620},
{'date': '19.04.17', 'price': 754000, 'trade': 165929},
{'date': '19.04.25', 'price': 757000, 'trade': 111805},
{'date': '19.04.19', 'price': 770000, 'trade': 76814},
{'date': '19.04.24', 'price': 771000, 'trade': 61650},
{'date': '19.04.16', 'price': 785000, 'trade': 68203},
{'date': '19.04.23', 'price': 775000, 'trade': 79128},
{'date': '19.04.22', 'price': 774000, 'trade': 58079},
{'date': '19.04.26', 'price': 764000, 'trade': 68237},
{'date': '19.04.18', 'price': 779000, 'trade': 94462}]
希望这会有所帮助。