#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. о, я думаю, что я только что сделал