реклама
Речникът python е структура на данни, подобна на асоциативен масив, открит в други езици на програмиране. Масив или списък индексира елементите по позиция. Речник, от друга страна, индексира елементите чрез ключове които могат да бъдат струни. Помислете за речник като непореден набор от ключ-стойност двойки.
В тази статия ви представяме да работите с речника на python.
Създаване на речник
Има няколко начина за създаване на речник на python. Най-простите използват инициализация на скоби, със синтаксис напомнящ на JSON Как да получите Python и JavaScript за комуникация с помощта на JSONДнес ще ви покажа как да използвате JSON за изпращане на данни от JavaScript към Python. Ще опиша как да настроите уеб сървър, заедно с целия код, от който се нуждаете. Прочетете още .
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
Можете да използвате числата и като клавиши. Въпреки това, бъдете внимателни като използвате числа с плаваща запетая като ключове, тъй като компютърът ги съхранява като приближения
Всичко, което трябва да знаете за RAM и управление на паметтаRAM е краткосрочната памет на вашия компютър. Следователно управлението на паметта оказва значително влияние върху производителността на системата. Тук обясняваме как работи RAM и дали можете да направите нещо, за да повишите нейната ефективност. Прочетете още .rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} печат дъжд_перцентен. печат rain_percent [1980] # отпечатъци {1980: '17%', 1981: '15%', 1982: '10%'} 17%
Посочване на двойки ключ-стойност
Можете също така да създадете и инициализирате речник, като използвате двойки от име на стойност като аргументи на ключовите думи към Dict () конструктор.
население = dict (Калифорния = 37253956, Колорадо = 5029196, Кънектикът = 3574097, Делауеър = 897934) печатно население. # отпечатъци {'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}
Масив ключови стойности
Още един начин за създаване на речник е използването на масив ключови стойности. Ето същия пример като по-горе.
двойки = [('Калифорния', 37253956), ('Колорадо', 5029196), ('Кънектикът', 3574097), ('Делауеър', 897934)] население = dict (двойки) печатно население. # отпечатъци {'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}
Разбиране на Dict
Разбирането на Dict осигурява хладен синтаксис за инициализиране на dict, ако можете да изчислите стойностите въз основа на клавишите. Следното инициализира дикта от числа и квадратни стойности за диапазон от числа.
отпечатване {x: x ** 2 за x в xrange (10, 20)} # отпечатъци {10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}
Как работи? Последната част (за x в xrange (10, 20)) връща диапазон от числа в указания диапазон. Частта за разбиране на дикта ({x: x ** 2 ..}) цикли в този диапазон и инициализира речника.
Работа с Python речник
Какво можете да направите с речниците, след като ги създадете? Е, можете да получите достъп до елементи, да актуализирате стойности, да изтриете елементи и т.н.
Достъп до Python Elements Dictionary
Достъп до елемент от dict, използвайки ключа в скобите, точно както бихте искали масив или списък Как работят масиви и списъци в PythonМасивите и списъците са едни от най-полезните структури от данни в програмирането, въпреки че малко хора ги използват в пълния си потенциал. Прочетете още .
печат популация ['Делауер'] # отпечатъци 897934.
Ако ключът е номер, не се нуждаете от кавичките. След това изразът изглежда като списък или индексиране на масив.
печат rain_percent [1980] # отпечатъци 17%
Типът на ключа при достъп до него трябва да съответства на това, което се съхранява в речника на Python. Следното причинява грешка, тъй като запаметените ключове са числа, докато ключът за достъп е низ.
x = '1980' печат rain_percent [x] # резултати в 1 x = '1980' > 2 печата Rain_percent [x] KeyError: '1980'
Достъп до несъществуващ ключ е грешка.
rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} печат rain_percent [1983] # отпечатъци 1 rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} > 2 печата rain_percent [1983] KeyError: 1983.
За достъп до ключ и предоставяне на стойност по подразбиране, ако картографирането не съществува, използвайте получите () метод с стойност по подразбиране като втори аргумент.
печат rain_percent.get (1985, '0%') # отпечатъци 0%
Проверка за съществуване
Какво става, ако искате да проверите за наличието на ключ, без всъщност да се опитвате да получите достъп до него (и евентуално да срещнете a KeyError както по-горе)? Можете да използвате в ключова дума във формата ключ в dct което връща булева.
отпечатване на 1980 г. в дъжд. отпечатай '1980' в дъжд-перцента. # отпечатъци Вярно. False.
Обратно условие (т.е. гарантира, че ключът не присъства в речника на Python), използвайки формата ключ не в dct. Това е еквивалентно на стандартното отрицание на питона не е ключ в dct.
печат 1980 г. не е в дъжд_перцента. отпечатай 1985 г. не е в дъжд. # отпечатъци False. Вярно.
Модифициране на елементи
Променете стойността, като присвоите необходимия ключ.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} потребители ['възраст'] = 29. потребители на печат. # отпечатъци {'lastname': 'Smith', 'age': 29, 'firstname': 'John'}
Използвайте същия синтаксис, за да добавите ново картографиране към речника на Python.
потребители ['dob'] = '15 -септ-1971 ' потребители на печат. # отпечатъци {'dob': '15 -sep-1971 ',' lastname ':' Smith ',' age ': 29,' firstname ':' John '}
Актуализирайте няколко елемента на речник в един кадър, като използвате актуализация () метод.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users.update ({'age': 29, 'dob': '15 -sep-1971 '}) потребители на печат. # отпечатъци {'dob': '15 -sep-1971 ',' lastname ':' Smith ',' age ': 29,' firstname ':' John '}
Задайте стойност по подразбиране за ключ с помощта на setdefault (). Този метод задава стойността за ключа, ако картографирането не съществува. Тя връща текущата стойност.
# не променя текущата стойност. отпечатайте users.setdefault („име“, „Джейн“) # отпечатъци John # задава стойност. отпечатайте users.setdefault ('city', 'NY') # отпечатъци NY # Крайна стойност. потребители на печат. # отпечатъци {'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'}
Изтриване на елементи
Изтрийте съпоставянията в речника с помощта на дел оператор. Този оператор не връща нищо.
Ще срещнете a KeyError ако ключът не съществува в речника.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} del потребители ['възраст'] потребители на печат. # отпечатъци {'lastname': 'Smith', 'firstname': 'John'}
Използвай поп () метод вместо това, когато искате изтритата стойност обратно.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} печат users.pop ('age') потребители на печат. # отпечатъци 27. {'lastname': 'Smith', 'firstname': 'John'}
Ами ако искате да изтриете ключ, ако той съществува, без да причинявате грешка, ако не е? Можеш да използваш поп () и уточнете Нито един за втори аргумент, както следва:
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users.pop ('foo', Няма) потребители на печат. # отпечатъци {'lastname': 'Smith', 'age': 27, 'firstname': 'John'}
И ето еднолинейно, за да изтриете куп ключове от речник, без да причинявате грешка на несъществуващи ключове.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15 -sep-1971 '} карта (lambda x: users.pop (x, None), ['age', 'foo', 'dob']) потребители на печат.
Искате ли да изтриете всички ключове от речник? Използвай ясно () метод.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} users.clear () потребители на печат. # отпечатъци {}
Looping с Python речници
Python предоставя много методи за примка Как работят циклите в компютърно програмиранеLoops са един от първите видове контроли, които ще научите в програмирането. Вероятно знаете за времето и за контурите, но какво прави цикълът за едновременно? Прочетете още над записите на речник. Изберете един, който да отговаря на вашите нужди.
Превързване на ключове
- Най-простият метод за обработка на ключове (и евентуално стойности) последователно използва цикъл на формата:
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} за k в потребителите: print k, '=>', потребители [k] # отпечатъци фамилия => Смит. възраст => 27. име => Джон.
- Използване на метода iterkeys () работи точно както по-горе. Вземете каква форма искате да използвате.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} за k в users.iterkeys (): print k, '=>', потребителите [k] # отпечатъци фамилия => Смит. възраст => 27. име => Джон.
- Трети метод за извличане и обработка на ключове в цикъл включва използване на вградената функция ITER ().
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} за k в iter (потребители): print k, '=>', потребители [k] # отпечатъци фамилия => Смит. възраст => 27. име => Джон.
- Когато имате нужда от индекса на ключа, който се обработва, използвайте изброяване () вградена функция, както е показано.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} за индекс, въведете изброяване (потребители): индекс за печат, ключ, '=>', потребители [k] # отпечатъци 0 фамилия => Джон. 1 възраст => Джон. 2 име => Джон.
Превъртане върху двойки ключ-стойност
- Когато искате да изтеглите всяка двойка ключ-стойност с едно повикване, използвайте iteritems ().
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} за k, v в users.iteritems (): print k, '=>', v. # отпечатъци фамилия => Смит. възраст => 27. име => Джон.
Итерация над стойности
- Методът itervalues () може да се използва за повторение на всички стойности в речника. Въпреки че този метод изглежда подобен на цикъл, използващ стойности(), той е по-ефективен, тъй като не извлича всички стойности наведнъж.
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} за стойност в users.itervalues (): стойност за печат. # отпечатъци Смит. 27. Джон.
Извличане на масиви
Следните методи описват извличането на различни данни от речника на Python във вид на масив. Полученият масив може да бъде цикличен с помощта на нормални python конструкции. Имайте предвид обаче, че върнатият масив може да бъде голям в зависимост от размера на речника. Така че може да е повече скъпо (в паметта) за обработка на тези масиви, отколкото използване на методите на итератора по-горе.
Един случай, в който е приемливо да се работи с тези масиви, е когато трябва да изтриете елементи от речника, когато срещнете нежелани елементи. Работата с итератор при промяна на речника може да доведе до RuntimeError.
- Методът елементи () връща масив ключови стойности. Можете да повторите тези двойки ключ-стойност, както е показано:
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} за k, v в users.items (): print k, '=>', v. # отпечатъци фамилия => Смит. възраст => 27. име => Джон.
- Извлечете всички ключове в речника, като използвате метода ключове ().
users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27} отпечатайте users.keys () # отпечатъци ['фамилия', 'възраст', 'първо име']
Използвайте върнатия масив, за да прегледате ключовете.
за k в users.keys (): print k, '=>', потребителите [k] # отпечатъци фамилия => Смит. възраст => 27. име => Джон.
- По подобен начин използвайте метода стойности() за извличане на всички стойности в речника.
за стойност в users.values (): стойност за печат. # отпечатъци Смит. 27. Джон.
Как използвате Python речници?
В тази статия се опитахме да обхванем най-често срещаните случаи за използване на python речници. Не забравяйте да проверите всички наши други статии на Python 10 основни примера на Python, които ще ви помогнат да научите бързоТази статия с основни примери на python е за тези, които вече имат известен опит в програмирането и просто искат да преминат към Python възможно най-бързо. Прочетете още за равномерно повече съвети на Python 5 курса, които ще ви отнемат от начинаещ Python до професионалистТези пет курса ще ви научат за програмиране на Python, един от най-горещите езици там в момента. Прочетете още . Ако имате други случаи на употреба, които смятате, че трябва да бъдат включени, моля, уведомете ни в коментарите по-долу!
Изображение Кредити: viper345 / Shutterstock