2016-04-06 40 views
0

Kişisel bilgiler için bir sorgu çalıştırırken bir ana sözlük oluşturmayla çalışıyorum.Sözlük python'da nasıl güncellenir?

dictionary = {} 
user_input =input('enter user id: ') 
D = query(user_input) 
dictionary[user_input] = D 

Ve sözlüğü yazdırmak eğer [user_input] = D, böyle bir şey alacak: Şu

Ben defalarca istemi ve tüm bireysel kaydetmek istediğiniz

{'user_input':[info]} 

Bir ana sözlükte bilgi ve bir metin dosyasına koydu.

Yazılımı nasıl biçimlendiririm, böylece metin dosyasına yazdırmaya çalıştığımda hepsi büyük bir sözlük olarak yazılır? Ben denedim ne

: Güvenilir bir şey diff:

output_file = ('output.txt', 'w') 
print(dictionary, file = output_file) 
output_file.close() 

Bu yalnızca} {

DÜZENLEME yazdırmak gibi görünüyor. D zaten bir sözlük döndüren beri Denedim: Sözlük sağa D ​​saklanır sözlüğü eklemek gerekiyordu

dictionary.update(D) 

? Ben baskı sözlüğünü çalıştığınızda

Ancak:

print(dictionary) 

#it returns: {} 

cevap

1

Kullanım json.dump dosyaya yazmak için. Daha sonra bu veriyi bir sözlük nesnesine geri yüklemek için json.load'u kullanabilirsiniz.

import json 

with open('dictionary.txt', 'w') as f: 
    json.dump(dictionary, f) 

https://docs.python.org/3/library/json.html

DÜZENLEME: Eğer json belki sadece bu gibi yeni hatları ile soru ve cevapları ayırabilirsiniz kullanamazsınız çünkü. konuyla tamamen aşina değil

with open('dictionary.txt', 'w') as f: 
    for k,v in dictionary.items(): 
     f.write('%s=%s\n' % (k, v,)) 
+0

bu aslında Aşina olduğum yoldur, ama Özellikle json kullanmamak söylendi .... – johnson

+0

Alternatif çözüm ile güncellenmiş cevap. – fips

0

, bu nedenle bu aradığınız buysa emin değilim: Bu da daha sonra ayrıştırmak kolay ve temiz olacaktır. Ancak değeri almak için ödevi kendiniz yazdırmanız gerekmez. Sen giderken sadece sözlüğe fazla şeyler eklemeye devam, sonra bu yüzden gibi, senaryonun sonunda dosyaya bütün sözlüğü yazdırabilirsiniz:

dictionary = {} 
user_input =input('enter user id: ') 
D = query(user_input) 
dictionary[user_input] = D 

# do this more times.... 
# then eventually.... 

print(dictionary) 

# or output to a file from here, as described in the other answer 
+0

bunu yaptım ve yazdırdığımda (sözlük) aldım {} – johnson