Problem z tworzeniem dictionary ze stringa

0

Mam problem z utworzeniem dictionary z przygotowanego wcześniej stringa, próbowałem już z biblioteką json, eval(), ast.literal_eval(), z pętlami, ale nie mogę dojść do tego co jest nie tak. Mianowicie słownik owszem tworzy się, ale tylko z dwóch pierwszych wartości i kluczy, reszta jest wyrzucana... Przykład:

>>> x = '{"1" : "2", "2" : "2", "1" : "2", "2" : "1"}'
>>> d = json.loads(x)
>>> print(d)
{'1': '2', '2': '1'}
>>>```
0

Zastanów się co chcesz w rzeczywistości uzyskać. Słownik jaki Ci powstaje zawiera mniej danych, bo klucze muszą być unikalne.

0

Nie Sprawdzasz co się dzieje?

d = {}
d["1"] = "2";
d["2"] = "2";
d["1"] = "2";
d["2"] = "1";
d # -> {'1': '2', '2': '1'}
0

No to w końcu wyjaśniło mój problem, a w jaki sposób mogę dodać do wartości klucza, tą wartość z klucza który się powtarza?

1

"w jaki sposób mogę dodać do wartości klucza, tą wartość z klucza który się powtarza?" Napisz to jeszcze raz, zrozumiale.

0

Chyba za bardzo zmęczony byłem jak to pisałem :D Chodzi mi o to, aby przy stringu

'{"1" : "2", "2" : "1", "3" : "4", "2" : "2"}'

Wynik był taki:

d = {'1' : '2', '2' : '3', '3' : '4'}

0
Wakun napisał(a):

Chyba za bardzo zmęczony byłem jak to pisałem :D Chodzi mi o to, aby przy stringu {"1" : "2", "2" : "1", "3" : "4", "2" : "2"}
.
'{"1" : "2", "2" : "1", "3" : "4", "2" : "2"}'

Wynik był taki:

d = {'1' : '2', '2' : '3', '3' : '4'}

Najwyraźniej dalej nie Wypocząłeś:P. Dict w Pythonie to, najprościej, pomijając detale implementacyjne, złożoność, itp. to taka jakby ulepszona tablica i jeszcze dynamiczna. W której zamiast pod indeksami liczbowymi, możesz, pod dowolnymi (no dokładnie hashowalnymi - sorry za to słowo, "hashable" powinno być) kluczami, przechowywać wartośći. Dla klucza var1 wartość value1, i tak dalej. Można usuwać, nadpisywać pary, dodawać nowe. Struktura wygląda tak, że wartości są jakie sa, natomiast klucze są unikalne(bo inaczej nie miałoby to sensu). Więc nie Możesz powiedzieć chcę takich a takich par, bo to zależy od kolejności dodawania. Poeksperymentuj w konsoli i Poczytaj dokładnie dokumentację.

0

Jeśli dobrze rozumiem...
Chcesz odnaleźć pojedyńcze liczby w stringu, są one przechowywane, a następnie tworzysz na jego podstawie klucz z tym fragmentem i kolejny większy element w wartości z tym że wartość nie może być większa niż największy odnaleziony element?

string = '{"1" : "2", "2" : "1", "3" : "4", "2" : "2"}'
collect_data = sorted(list({_ for _ in string if _.isdigit()}))
result = {key:val for key, val in zip(collect_data, collect_data[1:])}

To wpasowuje się w przykład który zarzuciłeś, ale poddaje pod wątpliwość moje rozumienie zagadnienia, bo funkcjonalności tu nie widzę. Zwłaszcza w odzyskiwaniu z czegoś co wygląda jak słownik, wartości jakby to był string.

1 użytkowników online, w tym zalogowanych: 0, gości: 1