__dict__ v Pythonu
V Pythonu je slovník an neuspořádaná množina datových hodnot to by mohlo být slouží k ukládání datových hodnot podobně jako mapa. Na rozdíl od jiných datových typů, které mohou obsahovat pouze jednu hodnotu na prvek, mohou slovníky obsahovat také a klíč:hodnota pár. K vytvoření slovníku Efektivnější , je nabízena hodnota klíče.
Pokud se týká přístupu k atributu, tečka '.' (jako v x.any_atribute ) je vše, co většina uživatelů zná. Zjednodušeně řečeno, atribut access je proces získání objektu, který je připojen k objektu, který již máte . Pro někoho, kdo používá Python, to může vypadat velmi jednoduše, aniž by zacházel příliš daleko do specifik. V zákulisí tohoto relativně jednoduchého procesu se však děje mnoho.
Co je _dikt_?
Každý modul má unikátní vlastnost tzv __diktovat__. Tento slovník obsahuje tabulku symbolů pro modul . (zapisovatelné) charakteristiky položky jsou uloženy ve slovníku nebo jiném mapovacím objektu.
Jednoduše řečeno, každý objekt v Pythonu má a vlastnost, která je označena symbolem __dict__ . Kromě toho má tento objekt všechny vlastnosti, které pro něj byly specifikovány. Jiný název pro __dict__ je mappingproxy objekt. Můžeme použít slovník přes použití vlastnosti __dict__ k objektu třídy.
Syntaxe:
object.__dict__
Příklad:
class AnimalClass: def __init__(self,identity,age): self.identity = identity self.age = age def feature(self): if self.age == '10': return True else: return False ac = AnimalClass('Lion','10') print(ac.__dict__)
Výstup:
{'identity': 'Lion', 'age': '10'} Příklad 2:
Tento příklad demonstruje, že pomocí atribut __dict__ lze vytvořit slovník z libovolného objektu:
# class Flowers is defined class Flowers: # constructor def __init__(self): # keys are being initialized with # their corresponding values self.Rose = 'red' self.Lily = 'white' self.Lotus = 'pink' def displayit(self): print('The Dictionary from object fields belongs to the class Flowers :') # object animal of class Animals flower = Flowers() # calling displayit function flower.displayit() # calling the attribute __dict__ on flower # object and making it print it print(flower.__dict__)
Výstup:
The Dictionary from object fields belongs to the class Flowers : {'Rose': 'red', 'Lily': 'white', 'Lotus': 'pink'} Příklad 3:
def funct(): pass funct.practice = 1 print(funct.__dict__) class PracticeClass: x = 1 def practice_function(self): pass print(PracticeClass.__dict__)
Výstup:
{'practice': 1} {'__module__': '__main__', 'x': 1, 'practice_function': , '__dict__': , '__weakref__': , '__doc__': None} Použití slovníku bez použití __dict__ v Pythonu:
Vytvoření slovníku:
V Pythonu lze slovník vytvořit uzavřením a seznam položek ve složených závorkách a oddělujících je čárkou . Slovník ukládá dvojice hodnot, kde jeden prvek páru je klíč a druhý jeho Klíč:hodnota . Na rozdíl od klíče, který nelze opakovat a musí být neměnné, hodnoty ve slovnících mohou obsahovat jakýkoli typ dat a lze je duplikovat .
Prvky jsou oddělené čárkami , je každý klíč odlišen od své hodnoty dvojtečkou (:), a celá struktura je obsažena v složené závorky . Slovník, který je zcela prostý všech slov, je napsán takto: {} .
Klíče slovníku musí být neměnný , jako celá čísla, n-tice nebo řetězce , ačkoli hodnoty mohou být libovolného typu. Ve slovnících Pythonu je stejný název klíče napsaný jinak považován za zřetelný klíč. Berte to prosím na vědomí slovníkové klíče rozlišují velká a malá písmena ; klíče s podobným názvem, ale odlišnou velikostí písmen, budou zpracovány odlišně.
Příklad:
# Creating a Dictionary # using Integer Keys only Dict = {1: 'JAVA', 2: 'T', 3: 'POINT'} print('
Creating a Dictionary by using Integer Keys : ') print(Dict) # Creating a Dictionary # using various Mixed keys Dict = {'Company': 'JavaTpoint', 7: [22, 35, 46, 97]} print('
Creating a Dictionary by using Mixed Keys : ') print(Dict) Výstup:
Creating a Dictionary by using Integer Keys : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using Mixed Keys : {'Company': 'JavaTpoint', 7: [22, 35, 46, 97]} The vestavěná metoda dict() umožňuje také tvorba slovníků . Jednoduše řečeno dvě složené závorky {} společně vyústí v an prázdný slovník .
Příklad:
# Creating an empty Dictionary myDict = {} print('This is an Empty Dictionary: ') print(myDict) # Creating a Dictionary # using the dict() method myDict = dict({1: 'JAVA', 2: 'T', 3: 'POINT'}) print('
Creating a Dictionary by using the dict() method : ') print(myDict) # Creating a Dictionary # using each item as a different Pair myDict = dict([(1, 'JavaTpoint'), (2, 'Great')]) print('
Creating a Dictionary by using each item as a different pair : ') print(myDict) Výstup:
This is an Empty Dictionary: {} Creating a Dictionary by using the dict() method : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using each item as a different pair : {1: 'JavaTpoint', 2: 'Great'} Složitost vytváření slovníku:
- Časová složitost: O(délka (diktát))
- Prostorová složitost: Na)
Vnořené slovníky:
Je to forma slovníku, kde je jeden nebo více než jeden klíčů má jako hodnotu připojený slovník klíče.
Příklad:
# Creating a Nested Dictionary # as mentioned above using a dictionary as a value to a key in # a dictionary myDict = dict({1: 'JAVA', 2: 'T', 3: 'POINT', 4: {1: 'JavaTpoint', 2: 'Great'}}) print('
Creating a Nested Dictionary : ') print(myDict) Výstup:
Creating a Nested Dictionary : {1: 'JAVA', 2: 'T', 3: 'POINT', 4: {1: 'JavaTpoint', 2: 'Great'}} Přidání prvků do slovníku:
Existují několik způsobů přidávání prvků do slovníku Pythonu. Zadáním hodnoty a klíče společně, např. Dict[Key] = 'Hodnota', do slovníku lze přidat jednu hodnotu najednou. Za použití vestavěná funkce update(). , lze upravit existující hodnotu ve Slovníku. Existující slovník lze také rozšířit vnořené hodnoty klíče .
Poznámka: Při přidávání hodnoty se hodnota aktualizuje, pokud kombinace klíč–hodnota již existuje. Pokud ne, přidá se do slovníku nový klíč a hodnota.
Příklad:
# Creating Empty Dictionary myDict = {} print('Empty Dictionary: ') print(myDict) # Adding elements only one at a time myDict[0] = 'Java' myDict[3] = 'T' myDict[6] = 41 print('
Dictionary after the addition of 3 elements: ') print(myDict) # Adding a set of values # to a particular Key myDict['settingValues'] = 7, 8, 9 print('
Dictionary after the adding a set of values to a key : ') print(myDict) # Updating the existing Key's Value myDict[3] = 'tPoint' print('
Dictionary after Updated key value: ') print(myDict) # Adding Nested Key value to Dictionary myDict[8] = {'Nested' :{'A' : 'boy', 'B' : 'Girl'}} print('
Dictionary after Addition of a Nested Key: ') print(myDict) Výstup:
Empty Dictionary: {} Dictionary after the addition of 3 elements: {0: 'Java', 3: 'T', 6: 41} Dictionary after the adding a set of values to a key : {0: 'Java', 3: 'T', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Updated key value: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Addition of a Nested Key: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9), 8: {'Nested': {'A': 'boy', 'B': 'Girl'}}} Složitost přidávání prvků do slovníku:
- Časová náročnost: O(1)/O(n)
- Prostorová složitost: O(1)
Přístup k prvkům slovníku:
Slovník využívá klíče , zatímco jiné datové typy vyžadují k načtení hodnot indexování. Klíče lze použít s funkce get(). nebo uvnitř hranatých závorek [].
V případě, že a klíč nelze najít ve slovníku, Je vytvořena chyba KeyError pokud použijeme hranaté závorky []. Na druhou stranu, pokud klíč nelze najít, funkce get() vrací Žádné.
Příklad:
# Python program to demonstrate the # accessing of an element, from a Dictionary # Creating a Dictionary myDict = {1: 'Java', 'name': 'T', 2: 'Point', 4: 'Website'} # accessing an element using key print('Accessing an element using the key:') print(myDict['name']) print('Accessing another element using the key:') print(myDict[4]) # accessing an element using the get() method print('Accessing an using the get() method:') print(myDict.get(2)) print('Accessing another using the get() method:') print(myDict.get(1)) Výstup:
Accessing an element using the key: T Accessing another element using the key: Website Accessing an using the get() method: Point Accessing another using the get() method: Java
Složitost přístupu k prvkům ve slovníku:
- Časová náročnost: O(1)
- Prostorová složitost: O(1)
Přístup k prvku vnořeného slovníku:
Můžeme si vzít na pomoc technika indexování [] získat hodnotu existujícího klíče v vnořený slovník .
Příklad:
# Creating a Dictionary myDict = {'myDict1': {3: 'JavatPoint'}, 'myDict2': {'Info.': 'Website'}} # Accessing the elements using the key print(myDict['myDict1']) print(myDict['myDict1'][3]) print(myDict['myDict2']['Info.']) Výstup:
{3: 'JavatPoint'} JavatPoint Website Metody vestavěného slovníku:
Průhledná() :
Funkce dict.clear() eliminuje každý pár klíč–hodnota ze slovníku.
kopírovat() :
A mělčí kopie slovníku je vrácena metodou dict.copy().
fromkeys() :
Pomocí dodaného iterovatelného (řetězec, seznam, sada nebo n-tice) jako klíče a zadaná hodnota, funkce dict.fromkeys() vytvoří nový slovník .
dostat() :
Tento udává související hodnotu s daným klíčem.
položky():
A objekt zobrazení slovníku , který nabízí dynamickou prezentaci položek slovníku jako seznam párů klíč-hodnota je vráceno pomocí funkce dict.items(). Když je slovník aktualizován, toto Objekt zobrazení je také aktualizován .
dict.keys() :
Funkce dict.keys() vrátí objekt pohledu slovníku se slovníkem seznam klíčů.
pop():
Tento vrátí hodnotu klíče po jeho odstranění . Pokud ve slovníku chybí klíč, vyhodí a KeyError nebo vrátí výchozí hodnota pokud byla poskytnuta.
napít se() :
Tento odebere jednu položku ze slovníku a vrátí n-tici párů (klíč, hodnota). The Last In First Out (LIFO) sekvence se používá pro vracení párů.
setdefault() :
Tento vrátí hodnotu slovníku pro daný klíč . Pokud klíč nelze zjistit, klíč s dodaným výchozí hodnota je přidáno. Nastavuje se Žádný jako výchozí hodnota pokud není dodáván.
hodnoty():
The objekt zobrazení slovníku, který nabízí dynamický pohled každé hodnoty, která je přítomný ve slovníku, je vrácen pomocí funkce dict.values(). Když je slovník aktualizován, toto Objekt zobrazení je také aktualizován .
Aktualizace() :
A slovník nebo jakýkoli iterovatelný s páry klíč–hodnota , jako je n-tice, lze aktualizovat pomocí funkce dict.update().
Příklad:
# Example to demonstrate all dictionary methods #Creating a Dictionary mydict1={1:'HTML',2:'CSS',3:'Javascript',4:'Python'} #copy method mydict2=mydict1.copy() print(mydict2) #clear method mydict1.clear() print(mydict1) #get method print(mydict2.get(1)) #items method print(mydict2.items()) #keys method print(mydict2.keys()) #pop method mydict2.pop(4) print(mydict2) #popitem method mydict2.popitem() print(mydict2) #update method mydict2.update({2:'C++'}) print(mydict2) #values method print(mydict2.values()) Výstup:
{1: 'HTML', 2: 'CSS', 3: 'Javascript', 4: 'Python'} {} HTML dict_items([(1, 'HTML'), (2, 'CSS'), (3, 'Javascript'), (4, 'Python')]) dict_keys([1, 2, 3, 4]) {1: 'HTML', 2: 'CSS', 3: 'Javascript'} {1: 'HTML', 2: 'CSS'} {1: 'HTML', 2: 'C++'} dict_values(['HTML', 'C++']) Rozdíl mezi slovníkem a seznamem:
Datové struktury jako a seznam a slovník jsou zásadně odlišné. An objednané série položek lze uložit do a seznam abychom do něj mohli indexovat nebo přes něj iterovat. Seznamy lze také měnit, i když již byly vygenerovány, protože se jedná o měnitelný typ. The Pythonský slovník je úložiště párů klíč–hodnota a provedení a hashovací tabulka . Nesleduje žádnou konkrétní sekvenci a vyžaduje hashovatelné klíče. Navíc je rychlý pro vyhledávání klíčů.
A seznam prvky obsahují následující vlastnosti:
- Pokud nejsou konkrétně přeuspořádány, jsou zachovat jejich aktuální pořadí (například řazením seznamu).
- Mohou být jakéhokoli typu, nebo dokonce a kombinace druhů .
Vlastnosti slovník prvky jsou následující:
- Každý záznam má a hodnotu a klíč .
- Objednávky jsou není zaručeno .
Použití:
Používáme a slovník pokud máme a sada odlišných klíčů, které odpovídají hodnotám , ale a seznam když máme objednaná skupina věcí .
závěr:
- V počítačovém jazyce, slovníky jsou druhem datové struktury používané k uchovávání informací že to nějak souvisí.
- Každý modul má unikátní vlastnost tzv __diktovat__.
- __diktovat__ obsahuje tabulku symbolů pro modul .
- Vlastnosti prvku jsou uloženy v a mapovací objekt.
- Každý objekt v Pythonu má a vlastnost, která je označena symbolem __dict__ .
- Jiné jméno pro __dict__ je také známé jako objekt mappingproxy.
- Dvě součásti pythonského slovníku se nazývají Klíče a hodnoty .
- Vy nemusí přijímat vaše data zpět v podobném pořadí, v jakém je zadáváte, protože slovníky neuchovávají svá data v žádném konkrétním pořadí.
- Klíče se budou skládat z právě jedna věc.
- Hodnoty mohou být celá čísla, seznamy, seznamy uvnitř seznamů , atd.
- Nemůže být více než jeden záznam na klíč (žádný duplicitní klíč není povolen)
- Klíče slovníku musí být neměnný , jako celá čísla, n-tice nebo řetězce , ačkoli hodnoty mohou být libovolného typu.
- Slovník klíče rozlišují velká a malá písmena ; ve slovnících Pythonu se stejný název klíče napsaný jinak považuje za a zřetelný klíč .