2016-07-20 18 views
1

Ich hatte dieses Problem noch nicht und habe versucht, es seit einiger Zeit zu beheben, aber ich kann das Problem nicht lösen (es wurden verschiedene Dinge versucht, wie das Erstellen von Kopien, tiefe Kopien und das Anhängen an DataFrame).Diktatliste wird weiterhin überschrieben - Was mache ich falsch?

Im Grunde versuche ich, eine Liste zu durchlaufen, ein Wörterbuch zu erstellen und dieses Wörterbuch an eine andere Liste anzuhängen. Die Wörterbucherstellung ist jedes Mal einzigartig, überschreibt jedoch alle vorherigen und fügt sie hinzu.

Und Entschuldigung im Voraus, wenn es eine offensichtliche Antwort gibt - immer noch ziemlich neu in diesem.

siehe unten Code:

bigram_values_dict_list = [] 
bigram_values_dict = {} 
counter = 0 

for bigram in bigram_string_list: 
    bigram_values_dict['bigram'] = bigram 
    bigram_values_dict['impressions'] = get_total_impressions(bigram) 

    print(bigram_values_dict) 

    counter += 1 

    if counter % 10 == 0: 
     print(bigram_values_dict_list) 

    bigram_values_dict_list.append(bigram_values_dict) 

und Ausgang:

{'bigram': 'mobile site', 'impressions': 10344864} 
{'bigram': 'learn more!', 'impressions': 4167059} 
{'bigram': 'lawn &', 'impressions': 742291} 
{'bigram': '& garden', 'impressions': 980153} 
[{'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}, {'bigram': '& garden', 'impressions': 2123500}] 

Ich glaube nicht, dass ich jemals dieses Problem mit Python hatte 2. Vielleicht bin ich etwas fehlt?

Vielen Dank im Voraus für jede Hilfe/Einblick !!

Antwort

2

Wechsel:

bigram_values_dict_list.append(bigram_values_dict) 

zu:

bigram_values_dict_list.append(bigram_values_dict.copy()) 

Auf diese Weise sind Sie eine Kopie Ihres Wörterbuch in die Liste angehängt, so dass zukünftige Änderungen des Wörterbuchs nicht bereits beeinflussen angehängte Wörterbücher.

Eine weitere Alternative ist (neu) definieren das Wörterbuch bei jeder Iteration der for-Schleife.

+0

okay, also habe ich definitiv versucht, dass früher, aber es hat nicht funktioniert ... denke, es gab einige extra Code, der für die Veröffentlichung hier gereinigt wurde. Oh, danke! – Zach