0

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

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

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

如果有人足够了解 Django ORM,可以从 PostgreSQL 数据库中提取具有属性的数据/列列表,那就更好了。

谢谢!

4

2 回答 2

3

name要从DB 表中仅获取该列的值,请使用:

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 的字符串表示形式)开始 - 它看起来不像它应该的方式。

或者,如果您实际上将dict's 作为字符串存储在数据库中,或者更喜欢 JSON 而不是 Python 字符串表示,或者如果您必须使用当前格式,那么此处另一个问题中提供的 AST 解析解决方案应该可以完成这项工作。

于 2013-09-27T11:41:44.380 回答
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']
于 2013-09-27T11:42:26.630 回答