2016-07-29 8 views
2

Ich habe folgendes Wörterbuch (Es ist json für die Erstellung),Python: in den ein Wörterbuch in einer Liste

temp = {'logs':[]} 

Ich möchte Wörterbücher anhängen, aber ich habe nur 1 Schlüssel: val auf einmal.

, was ich versucht:

temp['logs'].append({key:val}) 

Dies gilt als erwartet und hängt die dict mit dem Array. Aber jetzt möchte ich ein Schlüssel/val-Paar zu diesem Wörterbuch hinzufügen, wie kann ich das tun? Ich habe versucht, mit append/extend aber nur ein neues Wörterbuch zu der Liste hinzugefügt.

+0

Ich habe versucht, auf Stack-Überlauf bereits suchen. bitte nicht meine Frage ablehnen. Wenn Sie eine Frage wie diese bereits gestellt finden, würde ich es sehr schätzen. Eine neue Frage zu stellen bedeutet, dass es mein letzter Ausweg ist. – Islarf

+0

Können Sie ein Beispiel für die Ausgabe teilen, die Sie erhalten möchten?Ich fürchte, ich befolge die Frage nicht richtig. – Mureinik

+0

versuche 'temp ['logs']. Append ((schlüssel, val))' –

Antwort

1

Aber jetzt möchte ich diesem Wörterbuch ein Schlüssel/val Paar hinzufügen

Sie können Index die Liste und Update das Wörterbuch:

temp['logs'][0].update({'new_key': 'new_value'}) 
+0

Das könnte tatsächlich sein, was ich suche, danke! Ich versuche es mal! – Islarf

+0

Der * downvoter * kann bitte einen Kommentar hinterlassen, falls ich etwas verpasst habe –

+0

scheint auf die Frage zu antworten imo – pwnsauce

0

können Sie verwenden Mit diesem Befehl ändern Sie Ihre Diktatwerte:

>>> temp['logs'][0]={'no':'val'} 
>>> temp 
{'logs': [{'no': 'val'}]} 

Und diese Werte hinzuzufügen:

>>> temp['logs'][0].update({'yes':'val'}) 
>>> temp 
{'logs': [{'key': 'val', 'yes': 'val'}]} 
0

Es muss eindeutig sein „Schlüssel“ jedes Mal, wenn Sie es anhängen. (Wenn es für json)

auch machen „=“ wird aktualisieren Sie Ihre alten Wörterbuch

Was ich getan habe, als ich einmal festsaß ist

user = {} 
name,password,id1 = [],[],[] 
user1=session.query(User).all() 
for i in user1: 
    name=i.name 
    password=i.password 
    id1=i.id 
    user.update({ id1:{ 
      "name" : name, 
      "password" : password, 
      } 
     }) 

Check Link könnte hilfreich sein, um Sie

How to convert List of JSON frames to JSON frame

0

Beachten Sie, dass ein Wörterbuch (oder ein beliebiges Objekt) das Hinzufügen einer Liste nur eine Referenz speichert, keine Kopie.

Sie können dies dafür tun:

>>> temp = {'logs': []} 
>>> log_entry = {'key1': 'val1'} 
>>> temp['logs'].append(log_entry) 
>>> temp 
{'logs': [{'key1': 'val1'}]} 
>>> log_entry['key2'] = 'val2' 
>>> temp 
{'logs': [{'key2': 'val2', 'key1': 'val1'}]} 

Allerdings könnten Sie in der Lage sein, ganzes Problem zu umgehen, indem dict Verständnis mit (nur in Python> = 2,7)

>>> temp = {'logs': [{key: value for key, value in my_generator}] 
0

Versuchen Sie dieses Beispiel :

temp = { 'logs':[] }

[temp['logs'].append(log) for log in errors['logs']]

Ihre Protokolldaten wäre Liste mit mehreren Wörterbuch