Как получить вывод в правильном формате

#python

#python

Вопрос:

введите описание изображения здесь

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

файл =

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

правильный вывод = {'end': {}, 'start': {'1': {'start'}, '0': {'start', 'near'}}, 'near': {'1': {'end'}}}

Мне нужно написать функцию, которая принимает файл в качестве входных данных, чтобы получить правильный вывод, как указано выше. однако я понятия не имею, как создать внутренний словарь с помощью функции zip. может кто-нибудь показать мне правильный способ сделать это? Большое спасибо.

Комментарии:

1. Мне не совсем понятна взаимосвязь между вводом и ожидаемым результатом … не могли бы вы уточнить?

2. Я опубликовал изображение, чтобы объяснить взаимосвязь

3. Мне все равно удалось это выяснить, но не публикуйте изображения, чтобы объяснить вашу проблему . Выпишите текст в вопросе

4. Кроме того, вы должны показать свои собственные попытки решения. Это не служба написания кода. Честно говоря, это должно быть просто без zip. Я не думаю, что zip действительно помогает.

Ответ №1:

Вы можете взглянуть на это :

 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()
  

Что дает :

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

Комментарии:

1. Спасибо, это действительно помогает

2. @Stephan вы можете принять этот ответ, если он решит вашу проблему.

3. о, я думаю, что я только что сделал