2010-07-07 10 views
11

Bir sözlükün kopyalarına öğe eklemek için liste anlama nasıl kullanılır?

template = {'a': 'b', 'c': 'd'} 
add = ['e', 'f'] 
k = 'z' 

[{'a': 'b', 'c': 'd', 'z': 'e'}, 
{'a': 'b', 'c': 'd', 'z': 'f'}] 

oluşturmak için liste anlama kullanmak istiyorum Bunu yapabileceğimi biliyorum:

out = [] 
for v in add: 
    t = template.copy() 
    t[k] = v 
    out.append(t) 

fakat biraz ayrıntılı ve hiçbir avantajı yok Ne değiştirmeye çalışıyorum.

Bu biraz daha genel question on merging dictionaries biraz ilgili ama az ya da çok diyor.

cevap

16
[dict(template,z=value) for value in add] 

ya da (k kullanmak için):

[dict(template,**{k:value}) for value in add] 
+0

@Prelude: Bir dakika, evet. Teşekkürler! – unutbu

+0

BTW: '' 'nedir? Bağlansın mı? – BCS

+0

**, sözlük anahtar kelime argümanları olarak kullanmak içindir http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists –