Как создать вложенный dict из пользовательского ввода, а затем прочитать его обратно из CSV - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь написать вложенный словарь, в котором каждый ключ является запросом пользователя, а каждое значение - это словарь с файлом и частотой запроса в этом файле.

во время поиска я нашел это

import csv
import itertools

def mergedict(a,b):
    a.update(b)
    return a

fields = [ 'org', '2015', '2014', '2013' ]
dw     = { 'orgname1': { '2015' : 2, '2014' : 1, '2013' : 1 },
           'orgname2': { '2015' : 1, '2014' : 2, '2013' : 3 },
           'orgname3': { '2015' : 1, '2014' : 3, '2013' : 1 }
        }

with open("test_output.csv", "wb") as f:
    w = csv.DictWriter( f, fields )
    w.writeheader()
    for k,d in sorted(dw.items()):
        w.writerow(mergedict({'org': k},d))

Моя цель примерно такая:

import csv
import itertools

def mergedict(a,b):
    a.update(b)
    return a

fields = [ 'UserInput', 'Filename1', 'Filename2', 'Filename3' ]
past_search = { 'ham': { 'alice.txt' : 21, 'moby_dick.txt' : 11, 'cat_n_hat.txt' : 1 },
           'dog': { 'alice.txt' : 25, 'moby_dick.txt' : 13, 'cat_n_hat.txt' : 8 },
           'cat': { 'alice.txt' : 5, 'moby_dick.txt' : 1, 'cat_n_hat.txt' : 1 },

with open("pastQueries.csv", "wb") as f:
    w = csv.DictWriter( f, fields )
    w.writeheader()
    for k,d in sorted(dw.items()):
        w.writerow(mergedict({'user_query': k},d))

Я изо всех сил пытаюсь получить из словаря пользовательский ввод и написать функцию чтения, чтобы я мог извлечь данные из csv. У меня сейчас есть это

#Get user's search term
query = input("Please enter your query/queries separated by a comma.")

с этим в функции

try:
        with open(filename, encoding='utf-8') as f_obj:
            contents = f_obj.read()
    except FileNotFoundError:
        pass
    else:
        # Count approximate number of words in the file.
        words = contents.split()
        num_words = len(words)
        for word in words:
            if query.title()==word.title():
                term_frequency+=1                
        tf = term_frequency/num_words
#add results to past query dictionary and write to csv
        pquerydict[query] = {filename : tf}
        with open('PastQueries.csv', 'w') as csv_file:
            writer = csv.writer(csv_file)
            for key, value in pquerydict.items():
                w.writerow([query] + [pquerydict[filename][tf]])
...