2016-04-09 1 views
0

Salut là-bas, j'ai été aux prises avec ce problème depuis un moment maintenant.Ajout d'une clé de dictionnaire spécifique à une liste (Python 2.6)

J'ai un dictionnaire comme:

dict1 = { 
    'Name': 'ID Numbers', 
    'children': [] 
    } 

J'ai une autre liste des dictionnaires avec un certain nombre d'ID dans ce tels que:

list1 = [ 
    { 
    "id": 1004, 
    "othervalue": "blah blah" 

    }, 
    { 
    "id": 1008, 
    "othervalue": "blah blah" 

    } 

Je dois ajouter ces dictionnaires à la ' liste des enfants.

Si elle était de 2,7 je pouvais probablement faire:

for x in dict1: 
    x['children'].append(IDs from list1) 

Peut-être? Mais hélas c'est 2.6 et je n'ai absolument aucune idée de comment s'y prendre. Toutes les idées seraient très appréciées.

Résultats escomptés:

dict1 = { 
    'Name': 'ID Numbers', 
    'children': [ 

    { 
    "id": 1004, 
    }, 

    { 
    "id": 1008, 
    } 

] 
} 
+0

'pour x dans mydict3: x ['children']. Extend (list2)'? Il va littéralement ajouter ces dictionnaires à la liste des enfants. –

+0

Tout d'abord -apologies - J'ai mis à jour le code, j'ai un certain nombre de toutes les autres clés dans la liste2, donc j'ai besoin de itérer sur eux. Et ce code ne semble pas fonctionner de toute façon? 'TypeError: les index de chaîne doivent être des entiers, pas des' str'' –

+1

On ne sait toujours pas quelle est la sortie attendue. Votre 'list1' est dict. 'list2' est une liste de dictionnaires. 'mydict3' n'est même pas déclaré. Pouvez-vous nous montrer [MCVE]? –

Répondre

0

Bien que compréhensions dict ne sont pas disponibles en Python 2.6, vous pouvez toujours utiliser le constructeur dict. Comme il semble que vous souhaitez ajouter plusieurs éléments à la liste, extend peut convenir mieux que append.

dict1['children'].extend(dict([('id', d['id'])]) for d in list1) 
+0

Merci, cela a fonctionné parfaitement. Toutes mes excuses pour la mauvaise explication au début! –