Python 'adlı bir tür kapsayıcı sözlüğü destekler' isimlituple() 'modülde mevcut' koleksiyonlar '. Bu yazımızda NameTuple nasıl oluşturulur ve NamedTuple üzerinde işlemlerden bahsedeceğiz.
Python'da NamedTuple nedir?
İçinde Python NamedTuple içinde mevcut koleksiyon modülü . Bir sınıfa benzer, ancak tam bir sınıf tanımlama yükü olmadan basit, hafif veri yapıları oluşturmanın bir yolunu sağlar. Sözlükler gibi, belirli bir değere hashlenmiş anahtarlar içerirler. Aksine, hem anahtar/değerden erişimi hem de işlevsellik yinelemesini destekler. sözlükler eksiklik.
ikili arama pitonu
Python NamedTuple Söz Dizimi
isimlituple(tür adı alan_adları)
- typename - Adlandırılmış grubun adı.
- field_names - Namedtuple'da saklanan niteliklerin listesi.
Örnek: NamedTuple'ın kod uygulaması şurada gösterilmiştir: Python .
Python# Python code to demonstrate namedtuple() from collections import namedtuple # Declaring namedtuple() Student = namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using index print('The Student age using index is : ' end='') print(S[1]) # Access using name print('The Student name using keyname is : ' end='') print(S.name) 
Çıkış
The Student age using index is : 19 The Student name using keyname is : Nandini
NamedTuple'daki işlemler
Nametuple() kullanılarak yapılabilecek aşağıdaki işlemler aşağıda verilmiştir:
- NameTuple oluşturun
- Erişim İşlemleri
- Dönüşüm İşlemleri
- Ek İşlemler
Python'da bir NameTuple oluşturun
Bu, nametuple() işlevini kullanarak yeni bir Namedtuple sınıfı oluşturur. koleksiyonlar modülü. İlk argüman yeni sınıfın adı, ikinci argüman ise alan adlarının listesidir.
Pythonfrom collections import namedtuple Point = namedtuple('Point' ['x' 'y']) p = Point(x=1 y=2) print(p.x p.y) 
Çıkış
1 2
Erişim İşlemleri
Python'daki namedtuples, alanlarına erişmenin kolay yollarını sağlar. NamedTuple için Python'da sağlanan bazı erişim işlemleri aşağıda verilmiştir:
- Dizine göre erişim
- Anahtar adına göre erişim
- getattr() Kullanarak Erişim
Dizine Göre Erişim
Namedtuple()'ın öznitelik değerleri sıralıdır ve indeks tarafından erişilemeyen sözlüklerden farklı olarak indeks numarası kullanılarak erişilebilir. Bu örnekte öğrencinin dosyasına indeks kullanarak erişiyoruz.
java karşılaştırılabilirPython
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using index print('The Student age using index is : ' end='') print(S[1]) 
Çıkış
The Student age using index is : 19
Anahtar adına göre erişim
Sözlüklerde olduğu gibi anahtar isimle erişime de izin verilmektedir. Bu örnekte öğrencinin adına erişmek için anahtar adı kullanıyoruz.
soyut sınıfın yapıcısı olabilir miPython
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using name print('The Student name using keyname is : ' end='') print(S.name) 
Çıkış
The Student name using keyname is : Nandini
getattr() Kullanarak Erişim
Bu, argüman olarak nametuple ve key değerini vererek değere erişmenin başka bir yoludur. Bu örnekte öğrencinin verilen nametuple'daki kimliğine erişmek için getattr() işlevini kullanıyoruz.
Python# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using getattr() print('The Student DOB using getattr() is : ' end='') print(getattr(S 'DOB')) 
Çıkış
The Student DOB using getattr() is : 2541997
Dönüşüm İşlemleri
Namedtuples, diğer veri türleriyle çalışmak için birkaç yararlı dönüştürme işlemi sağlar. Python . Python'da adlandırılmış dosyalar için sağlanan aşağıdaki dönüştürme işlemleri aşağıda verilmiştir:
- _make()'ı kullanma
- _asdict()'ı kullanma
- ** (çift yıldız) operatörünü kullanma
_make() Kullanarak Dönüştürme
Bu fonksiyon bir değeri döndürmek için kullanılır. yinelenebilirden nametuple() argüman olarak geçti. Bu örnekte 'li' listesini nametuple'a dönüştürmek için _make() kullanıyoruz.
Python# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # initializing iterable li = ['Manjeet' '19' '411997'] di = {'name': 'Nikhil' 'age': 19 'DOB': '1391997'} # using _make() to return namedtuple() print('The namedtuple instance using iterable is : ') print(Student._make(li)) 
Çıkış
The namedtuple instance using iterable is : Student(name='Manjeet' age='19' DOB='411997')
_asdict() Kullanarak Dönüştürme İşlemi
Bu işlev şunu döndürür: the OrderedDict() nametuple()'ın eşlenen değerlerinden oluşturulduğu gibi. Bu örnekte, girdi listesini adlandırılmış örnek örneğine dönüştürmek için _asdict() işlevini kullanıyoruz.
java istisnalarıPython
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # initializing iterable li = ['Manjeet' '19' '411997'] # initializing dict di = {'name': 'Nikhil' 'age': 19 'DOB': '1391997'} # using _asdict() to return an OrderedDict() print('The OrderedDict instance using namedtuple is : ') print(S._asdict()) 
Çıkış
The OrderedDict instance using namedtuple is : OrderedDict([('name' 'Nandini') ('age' '19') ('DOB' '2541997')]) '**' (çift yıldız) operatörünü kullanma
Bu işlev, bir sözlüğü nametuple() işlevine dönüştürmek için kullanılır. Bu örnekte giriş listesini nametuple'a dönüştürmek için '**' kullanıyoruz.
Pythonimport collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # initializing iterable li = ['Manjeet' '19' '411997'] # initializing dict di = {'name': 'Nikhil' 'age': 19 'DOB': '1391997'} # using ** operator to return namedtuple from dictionary print('The namedtuple instance from dict is : ') print(Student(**di)) 
Çıkış
The namedtuple instance from dict is : Student(name='Nikhil' age=19 DOB='1391997')
Ek İşlemler
Sağlanan bazı ek işlemler vardır. Python NamedTuples için:
- _fields
- _yer değiştirmek()
- __yeni__()
- __getnewargs__()
_fields
Bu veri özelliği şunu elde etmek için kullanılır: tüm önemli isimler bildirilen ad alanı. Bu örnekte, bildirilen ad alanının tüm anahtar adlarını almak için _fields'ı kullanıyoruz.
Pythonimport collections Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # using _fields to display all the keynames of namedtuple() print('All the fields of students are : ') print(S._fields) 
Çıkış
All the fields of students are : ('name' 'age' 'DOB') _yer değiştirmek()
_replace(), str.replace() gibidir ancak adlandırılmış alanları hedefler (orijinal değerleri değiştirmez). Bu örnekte bir adı 'Nandini' yerine 'Manjeet' olarak değiştirmek için _replace() işlevini kullanıyoruz.
Pythonimport collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # ._replace returns a new namedtuple  # it does not modify the original print('returns a new namedtuple : ') print(S._replace(name='Manjeet')) 
Çıkış
returns a new namedtuple : Student(name='Manjeet' age='19' DOB='2541997')
__yeni__()
Bu fonksiyon, isimli tupledaki tuşlara atamak istediğimiz değerleri alarak, Öğrenci sınıfının yeni bir örneğini döndürür. Bu örnekte, Öğrenci sınıfının yeni bir örneğini döndürmek için __new__() işlevini kullanıyoruz.
Pythonimport collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Student.__new__ returns a new instance of Student(nameageDOB) print(Student.__new__(Student'Himesh''19''26082003')) 
Çıkış
Student(name='Himesh' age='19' DOB='26082003')
__getnewargs__()
Bu işlev, adlandırılmış demet'i düz bir demet olarak döndürür. Bu örnekte __getnewargs__() kullanarak aynısını yapıyoruz.
Pythonimport collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') H=Student('Himesh''19''26082003') # .__getnewargs__ returns the named tuple as a plain tuple print(H.__getnewargs__()) 
Çıkış
('Himesh' '19' '26082003') 
- Değişkenlik : Bir sınıfın örnekleri değiştirilebilir veya değişmez olabilir
namedtupleörnekler değişmez.- Yöntemler : Sınıflar yöntemler (işlevler) içerebilirken
namedtupleöncelikle verileri adlandırılmış alanlarla depolamanın bir yolunu sağlar.- Miras : Sınıflar, karmaşık hiyerarşilerin oluşturulmasına olanak tanıyan kalıtımı desteklerken
namedtuplemirası desteklemez.
Typed dict ile nametuple arasındaki fark nedir?
- Tip Kontrolü :
TypedDict(dantypingmodülü), tür denetimi için yararlı olan belirli anahtar/değer çiftlerine sahip sözlükler için tür ipuçları sağlar.namedtupletür ipuçları sağlamaz.- Değişkenlik :
TypedDictörnekler değiştirilebilir olup değerlerde değişiklik yapılmasına izin verirnamedtupleörnekler değişmez.- Yapı :
TypedDictsözlüklerin yapısını her anahtar için belirli türlerle tanımlamak için kullanılırkennamedtupleTuple benzeri veriler için adlandırılmış alanlar sağlar.
