2017-04-09 2 views
1

Ich bin nicht wirklich sicher, der beste Weg, dies zu erreichen.Python Daten Konstruktion mit mehreren Werten für einzelne Artikel

for line in lines: 
    value1 = a 
    value2 = b 
    value3 = c 

Es gibt mehrere Zeichenfolgen, die gleich value2 und value3 sind. Mein erster Gedanke war, ein Wörterbuch zu erstellen, aber der Anfangswert der Schlüssel wurde mit jedem neuen Wert überschrieben.

Wie kann ich eine Datenstruktur erhalten, die wie folgt aussieht:

{value1, value2 = [a,b,c], value3 = [d,e,f]} 

Kann ich in einem Satz machen Sie eine Liste?

+3

Sie ein Wörterbuch für sie machen können: { 'value1': [a, b, c], 'value2': [a, b, c], 'value3': [d, e, f] } – Meccano

+0

Ich bin nicht sicher, wie sich die angeforderte Struktur auf die Schleife bezieht, aber von dem, was ich von Ihrer Frage verstehe, ist es durchaus möglich, eine Liste von Elementen gegen einen einzelnen Schlüssel in einem Wörterbuch zB zu speichern '{Wert1: [a, b, c], Wert2: [d, e, f]}'. Sie könnten das Wörterbuch nur mit Schlüsseln und leeren Listen initialisieren, die mit diesen Schlüsseln verknüpft sind, dann an diese Liste anhängen oder etwas wie ein ['defaultdict'] verwenden (https://docs.python.org/2/library/collections.html # collections.defaultdict). – roganjosh

+0

{'Wert1': [a, b, c], 'Wert2': [a, b, c], 'Wert3': [d, e, f]} ist auf Tatsache die Struktur, die ich erstellen möchte. defaultdict Anweisungen sind ungefähr so ​​klar wie Schlamm. in den Aussagen. Was repräsentieren "k" und "v"? – Rthomas529

Antwort

0

Sie können einen defaultdict für diesen Zweck verwenden. Sie können dann einfach eine Liste für den Schlüssel erstellen und die mehreren Werte, die diesem Schlüssel zugeordnet sind, in einer Liste speichern (um das Problem des Überschreibens zu vermeiden).

Auf einer Basisebene, wenn Sie my_dict = defaultdict(list) definieren, was Sie sagen, ist "Wenn ich einen neuen Schlüssel für dieses Wörterbuch erstelle, wird dem Schlüssel automatisch eine leere Liste als Standardwert zugewiesen." Sie können dann Ihren Wert sofort an die leere Liste anhängen, die für diesen Schlüssel gespeichert wurde. Wenn der Schlüssel bereits vorhanden ist, verhält er sich genauso wie ein normales Wörterbuch.

import random 
from collections import defaultdict 

choice_of_numbers = range(20) # We will pick randomly from the list and assign to dict keys 

my_dict = defaultdict(list) # Create a defaultdict 

for x in range(5): # To emulate your for line in lines loop 
    my_dict['value1'].append(random.choice(choice_of_numbers)) 
    my_dict['value2'].append(random.choice(choice_of_numbers)) 
    my_dict['value3'].append(random.choice(choice_of_numbers)) 

print(dict(my_dict)) # We call dict here just to make the appearance more familiar 
Verwandte Themen