2016-10-10 5 views
-4

enter image description hereWie die outuput im richtigen Format

def read_ndfa(file : open) -> {str:{str:{str}}}: 
    pass 

Datei erhalten =

start;0;start;1;start;0;near 
near;1;end 
end 

korrekte Ausgabe = {'end': {}, 'start': {'1': {'start'}, '0': {'start', 'near'}}, 'near': {'1': {'end'}}}

ich eine Funktion schreiben müssen, die eine Datei als Eingabe verwendet um die korrekte Ausgabe wie oben zu erhalten. Ich habe jedoch keine Ahnung, wie man das innere Wörterbuch mit der Zip-Funktion erstellt. Kann mir jemand den richtigen Weg zeigen? Danke vielmals.

+0

Es ist mir nicht klar, welche die Beziehung zwischen dem Eingang und dem erwarteten Ausgang ... könnten Sie das näher erläutern? –

+0

Ich habe ein Bild, um die Beziehung zu erklären – Stephan

+0

Ich schaffte es, es trotzdem herauszufinden, aber * post nicht Bilder, um Ihr Problem zu erklären *. Schreibe den Text in der Frage –

Antwort

0

Sie einen Blick auf diese nehmen:

import csv 

f = open('data.csv', 'r') 

r = csv.reader(f, delimiter=';') 

out = {} 

for row in r: 
    out[row[0]] = {} # Set the top level key 

    # Loop on all odd elements 
    for pos in range(1, len(row), 2): 

     if row[pos] in out[row[0]]: 
      # Add the element to the existing set 
      out[row[0]][row[pos]].add(row[pos+1]) 
     else: 
      # Create a new set for the key 
      out[row[0]][row[pos]] = set([row[pos+1]]) 

print(out) 

f.close() 

Welche gibt:

{'near': {'1': {'end'}}, 'end': {}, 'start': {'0': {'near', 'start'}, '1': {'start'}}} 
+0

Danke, das hilft wirklich – Stephan

+0

@Stephan können Sie diese Antwort akzeptieren, wenn es Ihr Problem löst. – 3kt

+0

Können Sie mir sagen, wie ich es akzeptiere? – Stephan

Verwandte Themen