所以基本上我有一个应用程序,我正在做的有用户数据,我想备份和加载到数据库。我把数据存储在yml文件里。现在,用户有了帖子。每个帖子都有时间戳、文本和标签。我想使用ordereddictionary,以便在YAML文件中写入数据时保持顺序。目前,我正在做这样的事情:
def get_posts(user):
posts_arr = []
for post in user.posts.all():
temparr = OrderedDict()
temparr['timestamp'] = post.created_at.strftime("%Y-%m-%d %H:%M %p")
temparr['text'] = post.text
temparr['tags'] = (',').join(list(post.tags.all().values_list('field',flat=True)))
posts_arr.append(temparr)
return posts_arr
如您所见,我使用的是orderectionaries数组,我认为这就是我为每个用户发布的帖子没有被排序的原因。如何解决这个问题
我返回这个posts\u arr对象以存储在另一个ordereddictionary中
另外,由于posts文本是嵌套的,并且是一个大的文本块,所以我希望确保文本也存储在字符串文本块样式中
基本上,您的问题是对排序字典在python中如何工作的误解。python文档说明OrderedDict是:
https://docs.python.org/3/library/collections.html#module-collections
就我个人而言,我推荐一个由预先排序的帖子列表创建的字典列表。在本例中,如果我们保持您的大部分代码的原样,它会像这样:
您可以使用列表理解来从chepner建议的排序列表构建此列表,但我不想做太多更改
为每个帖子使用一个普通的
dict
(或者OrderedDict
,如果您确实需要的话),并为所有帖子的集合使用一个列表。一旦这样做了,就可以使用列表理解直接定义返回值了相关问题 更多 >
编程相关推荐