2017-05-20 5 views
0

私はこののQueryDictあります複数の値を持つキーを含むQueryDictからアイテムを抽出する方法はありますか?

{ u'a': [u'1', u'2'], u'c': [u'3']} 
:私はその dict(q.iterlists())返しますこれをあなたに通知する必要があり

{ u'a': [u'1',u'2'], u'c': u'3'} 

:私はこの結果を返すコードの一部を必要とする

>>> from django.http import QueryDict 
>>> q = QueryDict('a=1&a=2&c=3') 

よろしく、

+2

あなたは説明できますか? '' c ''の問題は何ですか? '[' c '] [0] 'を簡単に行うことができます。 – Kasramvd

+0

値が1つだけなので、私はリストにしたくありません。 @Kasramvd –

+0

繰り返しの後でリストを取得した後、q ['c'] – Exprator

答えて

2

短い答え:

{ 
    key:val if len(val)>1 else val[0] 
    for key,val in q.lists() 
} 
+1

キーcの値はまだunicode – timgeb

+0

私の間違いのために申し訳ありません。 Unicode出力は変更する必要はありません。私は私の質問を修正した。あなたの答えをありがとう。 @timgeb –

+0

@timgebはい、もちろんです。ありがとうございました。 –

1

あなたがのQueryDictをJSONに変換したい場合は 、

あなたはこのような何かを行うことができ

>>> from django.http import QueryDict 
>>> q = QueryDict('a=1&a=2&c=3') 
>>> q 
<QueryDict: {'c': ['3'], 'a': ['1', '2']}> 

私は実際にこのようにそれをやった、

>>> string_dict = json.loads(json.dumps(dict(q))) 
>>> string_dict 
{'c': ['3'], 'a': ['1', '2']} 

>>> for item in string_dict: 
...  if len(string_dict[item]) == 1: 
...   string_dict[item] = string_dict[item][0] 
... 
>>> string_dict 
{'c': '3', 'a': ['1', '2']} 
+0

私の間違いを申し訳ありません。 Unicode出力は変更する必要はありません。私は私の質問を修正した。あなたの答えをありがとう。 –

1

私はでありません。

とにかく、この理解は、Unicode文字列(再び、あなたがこれを望んでいないはずです)、単一の値のリストを取り除く:あなたが最初のケースが欲しい理由

d = { 'a': ['1', '2'], 'c': [u'3']} 
>>> {k:(map(str, v) if len(v) > 1 else str(v[0])) for k,v in d.items()} 
{'a': ['1', '2'], 'c': '3'} 
+0

私の間違い申し訳ありません。 Unicode出力は変更する必要はありません。私は私の質問を修正した。あなたの答えをありがとう。 –

+0

@MahyarDamavand問題はありませんが、下降音を避けてより良い回答を得るために、入力と期待される結果を今後も確認してください。 – timgeb

関連する問題