Losowość przy replace()

0

Mam

	location = {'lat': 52.235382, 'lng': 21.010353}
	str1 = str(location)
	str1 = str1.replace('lng', 'lon')
	return str1

zwraca to wyniki losowe {'lat': 52.235382, 'lon': 21.010353} albo {'lon': 21.010353, 'lat': 52.235382}. Skąd to się bierze?

0
  location = {'lat': 52.235382, 'lng': 21.010353}

To jest słownik (dictionary), czyli struktura danych która posiada klucze i odpowiadające im wartości. To w jaki sposób będzie to trzymane wewnętrznie jest uzależnione od implementacji, ale w większości przypadków kolejność nie jest zachowana. Dlatego patrz na location jako na zbiór 2 kluczy i wartości w nieistotnej kolejności. Samo str(location) zwraca Ci jakiś wynik a reszta dzieje się już zawsze tak samo.

0

Operacja, którą chcesz wykonać jest raczej bez sensu. Poza tym, ta operacja nie zwraca ani tego {'lat': 52.235382, 'lon': 21.010353} ani tego {'lon': 21.010353, 'lat': 52.235382}.

0

W Pythonie 3.6 jest już Ordered Dict.

0

Pytanie co autor chce osiągnąć. Zgaduję, że chce zmienić klucz zachowując wartość.

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