Wpis z mikrobloga

Jak w #python otrzymać jedną listę/słownik z pliku CSV? Jest moduł csv, ale (o ile dobrze rozumiem dokumentację i działanie) on za każdą iteracją tworzy kolejny słownik a ja chcę mieć wszystkie iteracje jako kolejne pozycje tego samego słownika.

Próbowałem pokombinować i jakoś zapisać ten output jako słownik, ale nie wiem jak to ugryźć.
Tutaj kod http://pastebin.com/gsNn9kVA
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Dar_Q: cóż, on robi dokładnie tak jak został do tego przewidziany CSV. Jeśli chcesz przechowywać klucz/wartość w CSV to robisz to źle i powinieneś użyć czegoś do tego przeznaczonego (INI), lub lepiej nadającego się (YAML, JSON).

Ale skoro pytasz to: http://pastebin.com/MkcfY4Bj (not tested)
Ale nadal — nie powinieneś chcieć czegoś takiego robić.
  • Odpowiedz
@morsik: Dzięki! Działa tak jak ma działać. Wynik:

{'wiersz2': 'wartosc2', 'wiersz5': 'wartosc5', 'wiersz3': 'wartosc3', 'wiersz1': 'wartosc1', 'wiersz4': 'wartosc4'}
Mam dwa pytania, jeśli można:
1. Dlaczego kolejność wartości w słowniku jest taka jak powyżej, mimo, iż w rzeczywistym pliku csv są w szeregu 1-5?
Spotkałem się już z takim "gubieniem kolejności" wcześniej i zastanawiało mnie to, ale jeszcze nie zdążyłem
  • Odpowiedz
1. Dlaczego kolejność wartości w słowniku jest taka jak powyżej, mimo, iż w rzeczywistym pliku csv są w szeregu 1-5?


@Dar_Q: słownik jest listą hashową. Ona nie ma kolejności (technicznie kolejność kluczy wynika z obliczonych wewnętrznie hashy dla kluczy).

W kolejnym kroku mam listę produktów, które należy wycenić - produkty są ustawione w pewnym określonym porządku, którego nie należy naruszyć.


Więc musisz użyć tablicy, a nie słownika. I tak kod
  • Odpowiedz
@morsik: Zobacz na to - to jest kod, który działa, dobrze dopasowuje i którym posługiwałem się dotychczas http://pastebin.com/LLpsDJ28

Do tej pory "szkielet" zarówno listy jak i słownika tworzyłem sobie szybko w Excelu i wklejałem do interpretera deklarując te zmienne i to wszystko cały czas działa.

Jedynym moim problemem teraz było ominięcie tworzenia słownika w Excelu za pomocą formuł, tylko chciałbym, aby python sam sobie zrobił z tego csv słownik.
Kod, który mi
  • Odpowiedz
Kod, który mi podałeś tworzy słownik bez problemu i wszystko działa w porządku, ale skoro mówisz, że tak się tego nie robi, to ciekawi mnie jak to rozwiązać zgodnie ze sztuką i dobrymi praktykami.


@Dar_Q: cóż, normalnie bym polecił przemyślenie Twojego rozwiązania, ale skoro…

W takiej formie to
  • Odpowiedz
Mam wrażenie, że mamy tu problem X/Y.


@morsik: Tutaj polemizowałbym. W klasycznym problemie X/Y chodzi o szukanie "na siłę" rozwiązania, które tak naprawdę nie jest rozwiązaniem głównego problemu. W moim przypadku problem główny jest już rozwiązany (przyporządkowywanie cen do produktów) a szukam jedynie usprawnienia, czyli rozwiązania konkretnego problemu z łatwym przekształceniem pliku csv na słownik.

Nie mam wpływu na to, jak dostaję te dane wejściowe (csv) a dalsze przetwarzanie ich, żeby doprowadzić
  • Odpowiedz