0

エンコードされた辞書のリストがあります。

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

キー名の値だけのリストを作成できる方法はありますか?

誰かがDjango ORMをよく知っていて、PostgreSQLデータベースからプロパティを持つデータ/列のリストを取得できる場合はさらに良い.

ありがとう!

4

2 に答える 2

3

nameDB テーブルから列のその値のみを取得するには、次を使用します。

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データベースに を文字列として保存している場合は、Python 文字列表現よりも JSON を優先するか、現在の形式を使用する必要がある場合は、別の質問で提供されている 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 に答える