Cześć,
Robię przykład z książki, z której się uczę pythona i wynika programu jest inny od tego co jest pokazane w książce.
Program wygląda następująco
def build_profile(first, last, **user_info):
"""Budowa słownika zawierającego wszystkie informacje o użytkowniku."""
user_info['first_name'] = first
user_info['last_name'] = last
return user_info
user_profile = build_profile('albert', 'einstein', location='pirnceston', field='fizyka')
print(user_profile)
I według autora powinno się wyświetlić:
{'first_name': 'albert', 'last_name': 'einstein', 'location': 'pirnceston', 'field': 'fizyka' }
niestety wynik jest taki:
{'location': 'pirnceston', 'field': 'fizyka', 'first_name': 'albert', 'last_name': 'einstein'}
Czyli zamiast pierwszej i drugiej pary klucz, wartość mamy trzecią i czwartą na początku a dopiero później wyświetla argumenty first i last.
Znalazłem na githubie rozwiązanie tego ale to już jest trochę inny kod. I chciałbym się dowiedzieć dlaczego przy tym oryginalnym nie ma zachowanej dobrej kolejności chociaż wyświetla wszystkie wartości słownika
Program z githuba z poprawnym działaniem
def build_profile(first, last, **user_info):
"""Build a dictionary containing everything we know about a user."""
profile = {}
profile['first_name'] = first
profile['last_name'] = last
for key, value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile('albert', 'einstein',
location='princeton',
field='physics')
print(user_profile)