Python предлага много вградени структури от данни като списъци, речници и кортежи за ефективно съхранение и управление на данните. Namedtuple е подобен на речник контейнер, наличен в модула „колекции“. Подобно на речниците, namedtuple също съдържа ключовете, които се преобразуват в стойности. Въпреки това namedtuple позволява достъп до стойностите чрез ключове, както и чрез индекси. В сравнение с речниците на Python, достъпът до стойностите чрез индекси е допълнителната функционалност в namedtuple. Тази статия обяснява Python namedtuple подробно с примери.
Достъп до стойности от namedtuple
Стойностите вътре в namedtuple могат да бъдат достъпни по следните начини:
- Чрез използване на клавишите
- Чрез използване на индексите
- Чрез използване на функцията 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 ()
- ** оператор
Функцията _make () преобразува обект, който може да се изпробва като списък и кортеж, в имена. Функцията _asdict () прави orderDict от посочения тройник и го връща. И накрая, операторът ** преобразува речник в имена двойка. Освен това функциите, които връщат посочената информация за двойка, са следните:
- _полета
- _replace ()
Функцията _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 (). Тази статия накратко обяснява наименованието чрез примери.