将一个键值从词典列表转换为列表

时间:2013-09-27 11:40:37

标签: python django postgresql dictionary django-orm

我有一个编码的字典列表:

[u"{'name':'Tom', 'uid':'asdlfkj223'}", u"{'name':'Jerry', 'uid':'alksd32'}", ...]

无论如何我可以创建一个只包含键名值的列表吗?

如果有人知道Django ORM足以从PostgreSQL数据库中删除具有属性的数据/列列表,那就更好了。

谢谢!

2 个答案:

答案 0 :(得分:3)

要从数据库表中仅获取name列的值,请使用:

names = Person.objects.values_list('name', flat=True)

(根据https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values_list

否则,给定

people = [{'name':'Tom', 'uid':'asdlfkj223'}, {'name':'Jerry', 'uid':'alksd32'},]

这应该做的工作:

names = [person['name'] for person in people]

你应该找出为什么你的数据项是字符串(包含字典的字符串表示)开始 - 它看起来不像它应该的那样。

或者,如果您实际上将dict作为字符串存储在数据库中,或者更喜欢JSON而不是Python字符串表示,或者如果必须使用当前格式,则在另一个问题中提供AST解析解决方案这里应该做的。

答案 1 :(得分:2)

您可以使用ast.literal_eval

>>> data = [u"{'name':'Tom', 'uid':'asdlfkj223'}",u"{'name':'Jerry', 'uid':'alksd32'}"]
>>> import ast
>>> [ast.literal_eval(d)['name'] for d in data]
['Tom', 'Jerry']