2016-05-05 5 views
2

値がリストである辞書を作成したいと思います。例えば: - []私は辞書のように、リスト内のすべての値を取得したい - 私はこれを行うとPythonはリストの辞書を作成します

"data": { 
    "1": { 
    "id": 1, 
    "name": test1, 
    "description":yyyyy 
}, 
     "2": { 
    "id": 2, 
    "name": test2, 
    "description":xxxxx 
} 
} 

、それだけでリストに作成します{}:

data = [] 
for x in Test.objects.filter(act=True): 
    data.append({"%s" % x.id:{"id":"%s" % x.id, "name": "%s" % x.name, "description": "%s" % x.description}) 
ins = {} 
ins['instance'] = data 

結果:

"data": [ 
{ 
    "1": { 
    "id": 1, 
    "name": test1, 
    "description":yyyyy 
} 
}, 
{ 
    "2": { 
    "id": 2, 
    "name": test2, 
    "description":xxxxx 
} 
} 
] 

助けが必要です。

+0

あなたの例は、値がリストではないので正確にシームレスではありません。 – tknickman

+0

リストはどこですか? –

+0

大丈夫です。私はこれで新しいです...私はリストとして渡さなければならないと思った。この例に示すように結果を得るのを助けてくれますか? – ash

答えて

1

を試してみてください、あなたは、あなたの質問にすべてのリストが表示されません。あなたが望む例では、その値が辞書でもある辞書があります。角括弧[]はリストを示す。中括弧{}は辞書を示します。リストは、順序付けられたアイテムの配列です。辞書は値をkey:valueのペアに格納します。

第2に、順番に番号が付けられたキーを使用して辞書を作成することは実際にはありません。単に辞書のリストを作成し、代わりにリストの索引で各項目を参照できます。

xまたはtest1またはyyyyyよりも、変数の名前を指定する必要があります。あなたは[1,test1,yyyyy]のようないくつかの値を持っているか、各項目をするために、対応[x.id,x.name,x.description]言うよう

だからあなたの質問のためとして、それが聞こえる: idnameを、そして descriptionは、私はあなたがこのデータをソートする方法のようなであると信じて:

data=[ 
    {"id":1,"name":test1,"description":yyyyy}, 
    {"id":2,"name":test2,"description":xxxxx} 
] 

だからあなたのコードは、次にあなたがそのような

ようなあなたのデータにアクセスすることができます

data=[] 
for x in Test.objects.filter(act=True): 
    data.append({"id":x.id,"name":x.name,"description":x.description}) 

#Or as a list comprehension: 
#data=[{"id":x.id,"name":x.name,"description":x.description} for x in Test.objects.filter(act=True)] 

のようになります。あなたは本当にあなたがあなたの記事で説明した方法を正確にあなたのデータをフォーマットしたい場合

for item in data: 
    print("""\ 
ITEM ID: {} 
ITEM NAME: {} 
ITEM DESCRIPTION: {} 
---------------------""".format(item["id"],item["name"],item["description"])) 

the_dict={} 
for index, x in enumerate(Test.objects.filter(act=True)): #assuming this is a list of objects 
    the_dict[str(index+1)]={"id":x.id,"name":x.name,"description":x.description} 
    #the +1 to start keys at 1 as in your example, instead of 0 

編集:あなたの例を再読み込みした後、あなたがにIDをしたいよう実は、それが聞こえますちょうど限り、あなたは重複IDが(辞書のキーは一意である必要があります)がないことを確認しているとして、その場合には1-nは...

から任意の番号を付けていない辞書で、キー、可能:

the_dict={} 
for x in Test.objects.filter(act=True): 
    the_dict[str(x.id)]={"id":x.id,"name":x.name,"description":x.description} 
+0

Gatorさん、ありがとうございました。 – ash

1

この例では、リストはありません。ネストされた辞書を持つ辞書があります。まず...

data = {} 
for x in Test.objects.filter(act=True): 
    data["%s" % x.id] = {"id":"%s" % x.id, "name": "%s" % x.name, "description": "%s" % x.description} 

ins = {} 
ins['instance'] = data 

または

data = {} 
for x in Test.objects.filter(act=True): 
    data[str(x.id)] = {"id":str(x.id), "name": str(x.name), "description": str(x.description)} 

ins = {} 
ins['instance'] = data 
関連する問題