我有一个编码的字典列表:
[u"{'name':'Tom', 'uid':'asdlfkj223'}", u"{'name':'Jerry', 'uid':'alksd32'}", ...]
无论如何我可以创建一个只包含键名值的列表吗?
如果有人知道Django ORM足以从PostgreSQL数据库中删除具有属性的数据/列列表,那就更好了。
谢谢!
答案 0 :(得分:3)
要从数据库表中仅获取name
列的值,请使用:
names = Person.objects.values_list('name', flat=True)
否则,给定
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']