1. Сөздіктер
2. Сөздіктермен жұмыс
Тізімдер мен кортеждерге қоса, Python тілінде сөздік (dictionary) деп аталатын кіріктірілген берілгендер құрылымы бар. Тізім сияқты сөздік те элементтер жиынын сақтайды. Сөздіктегі әр элементтің қайталанбайтын кілті болады.
Сөздікті анықтау келесі синтаксис арқылы жүргізіледі:
dictionary = { кілт1:мән1, кілт2:мән2, ....} |
Екі сөздікті анықтайық:
users = {1: "Tom", 2: "Bob", 3: "Bill"}
elements = {"Au": "Алтын", "Fe": "Темір", "H": "Сутегі", "O": "Оттегі"} |
users сөздігінде кілттер ретінде сандар, мәндер ретінде жолдар қолданылады. elements сөздігінде кілттер ретінде жолдар қолданылады.
Кілттер мен жолдардың бір типті болуы міндетті емес. Олар әр түрлі типтерді көрсетулері мүмкін:
objects = {1: "Tom", "2": True, 3: 100.6} |
Элементтері мүлдем жоқ сөздіктерді де анықтауға болады. objects = {}.
Немесе objects = dict()
Тізімнен сөздікке түрлендіру
Тізім мен сөздік бір-біріне ұқсамайтын типтер құрылымы болғанымен, dict() кіріктірілген функциясының көмегімен тізімдерді сөздіктерге түрлендіруге болады. Ол үшін тізімді кіріктірілген тізімдер жиыны болуы керек. Әр кіріктірілген тізім екі элементтен тұруы тиіс - сөздікке конвертация кезінде бірінші элемент кілтке, ал екінші элемент - мәнге айналады:
users_list = [ ["+111123455", "Tom"], ["+384767557", "Bob"], ["+958758767", "Alice"] ] users_dict = dict(users_list) print(users_dict) # {"+111123455": "Tom", "+384767557": "Bob", "+958758767": "Alice"} |
Осындай әдіспен екі өлшемді сөздіктерді де сөздікке айналдыруға болады:
users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict) |
Элементтерді алу және өзгерту
Сөздіктің элементтеріне қатынау үшін кілтті қолдану керек:
Мысалы, сөздіктегі элементке қатынап, оны өзгертейік:
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" }
# кілті "+11111111" элементті аламыз print(users["+11111111"]) # Tom
# "+33333333" кілтті элементке мән береміз users["+33333333"] = "Bob Smith" print(users["+33333333"]) # Bob Smith |
Элемент мәнін бергенде ондай кілті бар элемент сөздікте болмаса, онда ол жаңадан қосылады.
|
Алайда егер біз сөздікте жоқ кілтті мәнді алғымыз келсе, Python KeyError қатесін шығарады.
user = users["+4444444"] # KeyError
Бұл жағдайдың алдын алу мақсатынжа, кілттің сөздікте бар-жоғын алдын-ала тексеріп алу үшін кілт in сөздік өрнегін қолданамыз.
key = "+4444444" if key in users: user = users[key] print(user) else: print("Элемент табылған жоқ") |
Элементтерді алу үшін get әдісі қолданылады, оның екі формасы бар:
get(key): сөздіктен key кілті бар элементті қайтарады. Егер ондай кілті бар элемент жоқ болса, онда None мәнін қайтарады.
get(key, default): сөздіктен key кілті бар элементті қайтарады. Егер ондай кілті бар элемент жоқ болса, онда default мәнін қайтарады.
key = "+55555555" user = users.get(key) user = users.get(key, "Unknown user") |
Элементті жою
Элементті кілті бойынша жою үшін del операторы қолданылады:
users = { "+11111111": "Tom", "+33333333": "Bob", "+55555555": "Alice" }
del users["+55555555"] print(users) |
Алайда егер мұндай кілтті элемент сөздікте болмаса, онда KeyError ерекше жағдайы шығады. Сондықтан жоюдан бұрын осындай кілтті элементтің бар-жоғын тексеріп алған жөн:
key = "+55555555" if key in users: user = users[key] del users[key] print(user, "удален") else: print("Элемент не найден") |
Егер барлық элементтерді жою қажетболса, онда clear() әдісін қолдануға болады.
users.clear()
Сөздіктерді көшіру және біріктіру
copy() әдісі сөздіктің көшірмесін жасап, жаңа сөздікті қайтарады:
users = {"+1111111": "Tom","+3333333": "Bob","+5555555": "Alice"} users2 = users.copy() |
update() әдісі екі сөздікті қосады:
users = {"+1111111": "Tom","+3333333": "Bob","+5555555": "Alice"}
users2 = {"+2222222": "Sam","+6666666": "Kate"} users.update(users2)
print(users) # {"+1111111": "Tom", "+3333333": "Bob", "+5555555": "Alice", "+2222222": "Sam", "+6666666": "Kate"} print(users2) # {"+2222222": "Sam", "+6666666": "Kate"} |
users2 сөздігі өзгермейді. users сөздігі өзгереді, оған екінші сөздіктің элементтері қосылады. Бірақ егер екі сөздік те өзгермесін десеңіз және біріктіру нәтижесінде үшінші сөздік пайда болсын десеңіз, онда алдын ала бір сөздікті екіншісіне көшіру керек:
users3 = users.copy() users3.update(users2) |
© ООО «Знанио»
С вами с 2009 года.