Z pliku do słownika /wytłumaczenie kodu

Z pliku do słownika /wytłumaczenie kodu
bartek164
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad rok
  • Postów:534
0

Czy dodbrze to rozumiem? ten kod....
(!W programie jest użyty słownik(plik PoliMorf) , w kształcie, w środku pliku:
myślący \t myślenie \n
.... . \t .............\n
....

f.niepodstawowa \t forma podstawowa \n )

Kopiuj
try:
    document = open ('PoliMorf-0.6.7.tab','r',encoding='utf8')
except FileNotFoundError:
    print("Blad otwarcia\n")
    quit()
    
dictionary = {}
for line in document: //tutaj jest czytana każda linia?
    lista = line.split("\t")  //tutaj dzielona jest ta linia ze względu na \t
    dictionary[lista[0]] = lista[1]   // #### i teraz co się dzieje?co to znaczy dicionary[lista[0]], przeież w dicionary nie  ma nic na razie?
//jakby to było dicionary[0] to by znaczyło ze klucz to** forma podstawowa**, ale tak nie jest
while True:
    slowo = input("Podaj slowo:\n")
    try:
        print(dictionary[slowo])
    except KeyError:
        print("Nie ma takiego slowa\n")
edytowany 1x, ostatnio: bartek164
SE
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:318
0

lista = line.split("\t") //tutaj dzielona jest ta linia ze względu na \t
dictionary[lista[0]] = lista[1] // #### i teraz co się dzieje?co to znaczy dicionary[lista[0]], przeież w dicionary nie ma nic na razie?

Tak na oko dzieje się magia wypełniania słownika - dictionary = {lista[0] : lista[1], ... itd.}, a dicionary[lista[0]] oznacza "wartość pod kluczem lista[0]

jakby to było dictionary[0]

Gdyby tam był taki klucz, to miało by to jakiś sens

edytowany 2x, ostatnio: Serechiel
lion137
  • Rejestracja:ponad 8 lat
  • Ostatnio:13 minut
  • Postów:4942
1

Poczytaj dokumentacje, w tym momencie
dictionary[lista[0]] = lista[1]
Dodajesz pare key: lista[0], value: lista[1] do slownika, I tak dalej w petli.


Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Chcesz zajmować się przetwarzaniem języka naturalnego i jakąś lematyzacją tekstu a nie umiesz wczytać CSV w pythonie? :D Powodzenia!

Kopiuj
dictionary = {}
for line in document:
    lista = line.split("\t")
    base = lista[1]
    morphed = lista[0]
    dictionary[morphed] = base

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
bartek164
dopiero zaczołem dzisiaj robić w python, mam inne sprawy i dlatego robie to od środka, ale pythona się naucze pózniej
bartek164
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad rok
  • Postów:534
0

Panie shalom, ta instrukcja dictionary[morphed] = base dodaje rekord którym kluczem jest morphead a drugą wartością base?

Shalom
Tak, co zresztą widać chyba? Indeksujesz sobie dictionary za pomocą morphed czyli to będzie klucz, a przypisujesz wartość którą jest base
bartek164
dziwnie tak bez indeksów hihihiih, ale cóż
CM
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Warszawa
  • Postów:118
0

To jest jakieś zadanie, w którym nie możesz używać żadnych bibliotek? W tym przykładzie, wygodnie użyć na przykład pandas.

Kopiuj
import pandas as pd

df = pd.read_csv('PoliMorf-0.6.7.tab',
                 sep='\t',
                 encoding='utf-8',
                 header=None,
                 usecols=[0, 1],
                 index_col=0)
while True:
    slowo = input("Podaj slowo:\n")
    result = df.loc[df.index == slowo]
    if result.empty:
        print("Nie ma takiego slowa\n")
    else:
        print(result.to_string(index=False))

bartek164
jak się je zna, nie no dzisiaj pierwszy raz widze python, ale i tak z tego nic nie rozumiem, a to było rowiązanie dla nowych
CM
Jak, bierzesz kod z internetu, którego nie rozumiesz to moim zdaniem lepiej brać ten o wyższym stopniu abstrakcji. Wtedy łatwiej się zorientujesz o co chodzi (dlatego wrzuciłem tutaj alternatywne rozwiązanie). W tym przypadku pobranie csv-ki jesteś wstanie przeczytać z kodu i nic nie musisz rozgryzać.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.