我目前正试图在网页游戏中缓存很多内容。 它有点像一个speedrun游戏,你有特定的部分,它可以节省一个字典中的一个部分的每个持续时间。
所以现在,我有一个很长的词典:
dict = [{'account_id': '10', 'Damage': 4874, 'duration': 50.020756483078},
{'account_id': '10', 'Damage': 5920, 'duration': 20.020756483078},
{'account_id': '10', 'Damage': 2585, 'duration': 30.02078},
{'account_id': '4', 'Damage': 3145, 'duration': 21.020756483078},
{'account_id': '4', 'Damage': 4202, 'duration': 60.020756483078},
{'account_id': '4', 'Damage': 5252, 'duration': 66.020756483078}]
(对于account_id,更多,最多10个部分,但我刚创建了一个用于此问题的示例)
然后我们需要将这些时间分配给account_id
enterDict = {}
for x in dict :
enterDict[x["account_id"]] = x
但是当我尝试从缓存中获取时间时,通过
account_id = "4"
EnterInfo = enterDict[account_id]
print(EnterInfo)
它只返回一个
{'损害':5252,' account_id':' 4','期限':66.020756483078}
作为补充:
如果我们解决了这个问题,有没有办法可以给他们订单?因为dicts搞砸了所有东西。
所以它应该从最低持续时间开始到最高持续时间,因为这是正确的正确顺序。
所以我可以使用[0]作为最低持续时间21 [1]为60和[2]为66.我不介意,如果有一个新的键:值与"顺序": " 0","顺序":" 1"和"命令":" 2"
{'account_id': '4', 'Damage': 3145, 'duration': 21.020756483078},
{'account_id': '4', 'Damage': 4202, 'duration': 60.020756483078},
{'account_id': '4', 'Damage': 5252, 'duration': 66.020756483078}]
答案 0 :(得分:1)
您真正想要做的是创建一个词典列表作为“account_id”键后面的值。现在,您将替换每个添加键的先前值,而不是添加(追加)它。
有关如何在字典中初始化列表的示例,请参阅1。
请参阅2以获取某个值上的dicts列表的示例。不过我也可以为这个Job建议一个Pandas Dataframe。
这可能是一个解决方案:
from collections import defaultdict
from operator import itemgetter
enterDict = defaultdict(list)
for item in dict:
enterDict[item['account_id']].append(item)
sortDict = defaultdict(list)
for key_of_dict in enterDict:
sorted_list = sorted(enterDict[key_of_dict], key=itemgetter('duration'))
sortDict[key_of_dict] = sorted_list