【发布时间】:2019-03-12 16:22:13
【问题描述】:
所以基本上我有一个我正在制作的应用程序,其中包含我想要备份并加载到数据库中的用户数据。我将数据存储在 yml 文件中。现在,用户有帖子。每个帖子都有一个时间戳、文本和标签。当我在 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_arr 对象以存储在另一个有序字典中。
另外,由于帖子文本有点嵌套并且是一大块文本,我想确保文本也以字符串文字块样式存储。
【问题讨论】:
-
您不需要
OrderedDict来处理其中任何一个。temparr可以是普通的dict,因为您不(或不应该)关心timestamp、text和tags字段的相对顺序,而posts_arr应该只是一个列表. -
不幸的是,我确实需要维护订单以确保易于阅读。如果我不这样做,那么我所有的帖子都会有不规则的时间戳、文本和标签顺序
-
如果您使用的是 Python 3.7,插入顺序也将保留在常规
dict中。 -
嗯,我目前使用的是 python 3.5
-
究竟是什么没有被订购?你能提供一份你的 YAML 文件,以及它应该出来的内容吗?
user.posts.all()是否按照您想要的顺序进行迭代?
标签: python python-3.x yaml pyyaml