Python

Python Namedtuple

Python Namedtuple

Python предлага много вградени структури от данни като списъци, речници и кортежи за ефективно съхранение и управление на данните. Namedtuple е подобен на речник контейнер, наличен в модула „колекции“. Подобно на речниците, namedtuple също съдържа ключовете, които се преобразуват в стойности. Въпреки това namedtuple позволява достъп до стойностите чрез ключове, както и чрез индекси. В сравнение с речниците на Python, достъпът до стойностите чрез индекси е допълнителната функционалност в namedtuple. Тази статия обяснява Python namedtuple подробно с примери.

Достъп до стойности от namedtuple

Стойностите вътре в namedtuple могат да бъдат достъпни по следните начини:

  1. Чрез използване на клавишите
  2. Чрез използване на индексите
  3. Чрез използване на функцията getattr ()

Тъй като namedtuple преобразува полето в атрибутите, следователно е лесен достъп до стойностите с помощта на функцията getattr ().

Примери

Сега нека видим няколко примера, за да разберем създаването и работата на namedtuple. За да създадем и използваме namedtuple, първо трябва да импортираме модула колекции. В дадения по-долу пример е създаден поименен тройка за учител. Ключовете на посочената двойка са съответно име, възраст и отдел. Стойностите са достъпни с помощта на индекси и ключове.

#importing колекционен модул
импортиране на колекции
#creating a namedtuple for a teacher
#name, възраст и отдел са ключовете
Учител = колекции.namedtuple ('Учител', ['име', 'възраст', 'отдел'])
# създайте нов учител и добавете стойностите
teacher_john = Учител ("Джон", 29, "Компютърни науки")
# достъп до стойностите на учителя с помощта на индекси
print ("Достъп до стойности с помощта на индекси:")
print ("Името на учителя е:", teacher_john [0])
print ("Възрастът на учителя е:", teacher_john [1])
print ("Учителският отдел е:", teacher_john [2])
# достъп до стойностите на учителя с помощта на ключове
print ("Достъп до стойности с помощта на ключове:")
print ("Името на учителя е:", teacher_john.име)
print ("Възрастът на учителя е:", teacher_john.възраст)
print ("Учителският отдел е:", teacher_john.отдел)

Изход

Сега нека да осъществим достъп до стойностите с помощта на функцията getattr (). Наименованата двойка и ключът се предават като аргумент на функцията getattr ().

#importing колекционен модул
импортиране на колекции
#creating a namedtuple за учител
# име, възраст и отдел са ключовете
Учител = колекции.namedtuple ('Учител', ['име', 'възраст', 'отдел'])
# създайте нов учител и добавете стойностите
teacher_john = Учител ("Джон", 29, "Компютърни науки")
# достъп до стойностите на учителя с помощта на функцията getattr ()
печат (getattr (teacher_john, "name"))
печат (getattr (teacher_john, "age"))
печат (getattr (teacher_john, "отдел"))

Изход

Популярни операции на namedtuple

Някои популярни функции преобразуват останалите колекции като списъци, речници и кортежи в namedtuple и връщат информацията за namedtuple. Следват функциите, които преобразуват останалите колекции в namedtuple:-

Функцията _make () преобразува обект, който може да се изпробва като списък и кортеж, в имена. Функцията _asdict () прави orderDict от посочения тройник и го връща. И накрая, операторът ** преобразува речник в имена двойка. Освен това функциите, които връщат посочената информация за двойка, са следните:

Функцията _fields () връща всички полета на посочения тройка, докато функцията _replace () заменя определена стойност с друга стойност.

Нека внедрим функциите, както е споменато по-горе в нашия Python скрипт, за да конвертираме различните колекции в namedtuple.

#importing колекционен модул
импортиране на колекции
#creating a namedtuple за учител
# име, възраст и отдел са ключовете
Учител = колекции.namedtuple ('Учител', ['име', 'възраст', 'отдел'])
# създайте нов учител и добавете стойностите
teacher_john = Учител ("Джон", 29, "Компютърни науки")
#creating a list
teacher_list = ["Mark", 30, "Business Administration"]
# създаване на речник
teacher_dict = 'name': 'Talor', 'age': 32, 'отдел': 'Икономика'
# using _make () функция за конвертиране на списък в namedtuple
print ("Преобразуване в списък с имена на двойки:")
печат (Учител._make (списък с учители))
#use _asdict () функция, за да направи OrderDict
print ("Осъществяване на OrderedDict:")
печат (teacher_john._asdict ())
# Използване на ** за конвертиране на речник в именадвойка
print ("Преобразуване на речника в namedtuple:")
печат (Учител (** учител_решение))

Изход

Сега нека използваме функциите _fields () и _replace (), за да получим информацията за ключовете и да заменим съответно клавишите.

#importing колекционен модул
импортиране на колекции
#creating a namedtuple за учител
# име, възраст и отдел са ключовете
Учител = колекции.namedtuple ('Учител', ['име', 'възраст', 'отдел'])
# създайте нов учител и добавете стойностите
teacher_john = Учител ("Джон", 29, "Компютърни науки")
#use _fields функция за получаване на ключовете на namedtuple
print ("Ключовете на namedtuple са:")
печат (Учител._полета)
# Използване на функция _replace за замяна на стойността
print ("Заместващата стойност на името е:")
печат (teacher_john._replace (name = 'Donald'))

Изход
В изхода може да се види, че функцията _fields връща ключовете за информация, а функцията _replace () заменя името успешно.

Заключение

Namedtuple е подобен на речник контейнер, присъстващ в модула „колекции“. Той съдържа ключа и съпоставя стойностите с ключа. За разлика от речника на Python, стойностите на namedtuples също могат да бъдат достъпни с помощта на функциите indexes и getattr (). Тази статия накратко обяснява наименованието чрез примери.

Как да използвам GameConqueror Cheat Engine в Linux
Статията обхваща ръководство за използването на GameConqueror cheat engine в Linux. Много потребители, които играят игри под Windows, често използват ...
Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...
Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...