ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π° ΡΠΎΠ·Π΄Π°Π΄ΡΡ ΡΠ»ΠΎΠ²Π°ΡΠΈ dictionary
Π‘Π»ΠΎΠ²Π°ΡΠΈ (dict, dictionary) Π² Python
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π‘Π»ΠΎΠ²Π°ΡΡ β ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΊΠ»ΡΡΠ΅ΠΉ, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Mapping Π² Python. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΡΡΠ»Π°ΡΡΡ Π½Π° ΠΊΠ»ΡΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠ²Π°ΡΠΈ ΡΡΡΠ»Π°ΡΡΡΡ ΠΏΠΎ ΠΊΠ»ΡΡΡ, Π² Π½ΠΈΡ Π±ΡΡΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠΈΡΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΠΊΠ»ΡΡΡ ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΡΡΠΈΡΡΡΡΡΡ.
ΠΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΡΠ»ΠΎΠ²Π°ΡΡ
Π‘ΡΡΠΎΠΊΠ° «Hello» Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ»ΡΡΠΎΠΌ. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅, ΠΏΠΎΠΌΠ΅ΡΠ°Ρ ΠΊΠ»ΡΡ Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ.
Π§ΠΈΡΠ»ΠΎ 1234 Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Π΅Π΄ΡΡ «Hello» Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅.
x = dictionary.get(«whatever», «nuh-uh»)
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ dict()
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ dict() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.
ΠΠ°ΠΊ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ KeyError
Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ β Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠ»ΡΡΡ. ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ KeyError :
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΠΎΡΠΈΠ±ΠΊΠΈ β ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π΅ΡΡΡ Π»ΠΈ ΠΊΠ»ΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΡΡΠ΅Π΄Π°Ρ ΠΊΠ»ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΡ Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ΄Π°Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΡΡΡΠΏ ΠΊ ΠΊΠ»ΡΡΠ°ΠΌ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌΠΈ ΡΠ°ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ»ΡΡΠ°ΠΌ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅, Π² ΡΠΈΠΊΠ»Π΅ for, Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°.
Π‘Π»ΠΎΠ²Π°ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ keys ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ dict_keys :
ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ values ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ dict_values :
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Ρ ΠΊΠ»ΡΡΠΎΠΌ, ΡΠ°ΠΊ ΠΈ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ items ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ dict_ items :
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠ»ΠΎΠ²Π°ΡΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ
Π‘Π»ΠΎΠ²Π°ΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»Π°
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠ»ΠΎΠ²Π°ΡΡ
Π§Π΅ΡΠ΅Π· Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ dict()
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΡ
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠ»ΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ:
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
Π§ΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΊΠ»ΡΡ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ:
Π‘Π»ΠΎΠ²Π°ΡΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
ΠΠΎΡΡΡΠΏΠ½ΠΎ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΊΠ°ΠΊ defaultdict
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, dict.setdefault() Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ a[]) ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ Π»ΠΈΡΠ½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ.
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎΡΡΠ΄ΠΊΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅.
Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° **
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠ»ΠΎΠ²Π° ** Π΄Π»Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π£ΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Python 3.5 Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² [ dict ].
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«ΠΠ»ΠΈΡΡΠΎΡΠ΄Β» ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Β«ΠΠ΅ΠΌΠΎΒ»).
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π·Π½ΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠΈ:
Python 3.5+
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«ΠΠ»ΠΈΡΡΠΎΡΠ΄Β» ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Β«ΠΠ΅ΠΌΠΎΒ»).
Python 3.3+
ΠΠ΄Π΅ΡΡ ΠΏΠ΅ΡΠ²ΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π°ΡΡΡΡ ΠΊΠΎΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ, Π° Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ (Β«ΠΠ»ΠΈΡΡΠΎΡΠ΄Β» Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·Ρ Β«ΠΠ΅ΠΌΠΎΒ»).
Python 2.x, 3.x
ΠΠ΄Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΠ»ΠΈΡΠ½ΠΈΡ [**] (Β«ΠΠ»ΠΈΡΡΠΎΡΠ΄Β» ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Β«ΠΠ΅ΠΌΠΎΒ»).
ΠΠ°ΠΌΡΠΊΠ°ΡΡΠ°Ρ Π·Π°ΠΏΡΡΠ°Ρ
Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π² ΡΠΏΠΈΡΠΊΠ°Ρ ΠΈΠ»ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°Ρ , ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π·Π°ΠΌΡΠΊΠ°ΡΡΡΡ Π·Π°ΠΏΡΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ»ΠΎΠ²Π°ΡΠ΅.
PEP 8 ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΎΡΡΠ°Π²Π»ΡΠ»ΠΈ ΠΏΡΠΎΠ±Π΅Π» ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΌΡΠΊΠ°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ.
ΠΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄.
ΠΡΠΎ Π΄Π°Π΅Ρ Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ, Ρ ΡΠ°Π½ΡΡΠΈΠΉΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ combinations :
ΠΠ΅ΡΠ΅Π±ΠΎΡ ΡΠ»ΠΎΠ²Π°ΡΡ
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ for ), ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ ΠΊΠ»ΡΡΠΈ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°Ρ :
ΠΠ΅ΡΠΎΠ΄ items() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΡΡΠ° ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
ΠΠ΅ΡΠΎΠ΄ values() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ
ΠΡΠ°Π²ΠΈΠ»Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΡ:
ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ
Π‘Π»ΠΎΠ²Π°ΡΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠ»ΡΡΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ
ΠΠΎΡΡΡΠΏ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΈΡ ΠΊΠ»ΡΡΠ°ΠΌ
Π‘Π»ΠΎΠ²Π°ΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ Π² ΡΡΠΈΠ»Π΅ JSON:
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π±ΡΠ°Π½Ρ:
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ
Π§ΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ:
β ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ (ΠΈΠ½Π°ΡΠ΅ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½);
β ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Ρ ΡΡΠΈΡΡΠ΅ΠΌΡΠΌ (Π΄Π»Ρ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ hash) Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ TypeError;
β Π΄Π»Ρ ΠΊΠ»ΡΡΠ΅ΠΉ Π½Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°.
ΠΠ°ΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π°ΠΌ Python ΠΈ Data Science Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅
ΠΡΠΎ Π½Π΅ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΠΎΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΡΡΡ, Π° ΠΎΠ½Π»Π°ΠΉΠ½-ΡΡΠ΅Π½Π°ΠΆΠ΅Ρ, Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΡΠ°Π±ΠΎΡΠΈΡ Π·Π°Π΄Π°Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΈΡΡΡΡ Π² Π»ΡΠ±ΠΎΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ 24/7. ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΎΠΏΡΡ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ° Python Π½Π΅Π·Π°ΡΠ»ΡΠΆΠ΅Π½Π½ΠΎ ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ Π±Π΅Π· Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎ Π½ΠΈΡ Π½Π΅ Π·Π½Π°ΡΡ. Π ΡΡΠΎΡ ΡΠ°Π· ΡΠ΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ·ΡΠΊΠ°, Π΄Π΅Π»Π°ΡΡΠ΅ΠΉ ΠΊΠΎΠ΄ ΡΡΠ½Π΅Π΅: Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ β ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ. ΠΠΎ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ.
ΠΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ Π² Python.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΡΡΠΎΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ β Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΏΠΈΡΠΊΠ°. ΠΠ½ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΈ Ρ Π²ΡΡΡΠ΅ΡΠ°Π» Π΅Π³ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΠΈ Π² ΠΊΠΎΠ΄Π΅ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠΏΠΈΡΠΎΠΊ. Π₯ΠΎΡΠΎΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΡΡΠ½ΠΊΡΠΈΡ range(start, end), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»Π° ΠΌΠ΅ΠΆΠ΄Ρ start ΠΈ end. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Python 3.0 ΠΎΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅ ΡΡΠ°Π·Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, Π° Π²ΡΠ΄Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π·Π° ΡΠΈΡΠ»ΠΎΠΌ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π Python 2.* Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ xrange(). ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ 10 ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ½ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ°, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅. Π’Π°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅Π΅ ΡΠΏΠΈΡΠΎΠΊ Π² ΠΎΠ±ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΅Π³ΠΎ, ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΊ Π½Π΅ΠΌΡ ΠΏΡΠΈΠ²ΡΠΊΠ½Π΅ΡΡ β ΠΊΠΎΠ΄ ΡΡΠ°Π½Π΅Ρ ΠΏΡΠΎΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ²
ΠΡΡΠ³Π°Ρ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠ°ΡΡΡ Π·Π°Π΄Π°ΡΠ° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ β ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠΎΠΏΡΡΡΠΈΠΌ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ:
Π‘Π°ΠΌΡΠΉ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π°Π»ΠΈΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΡΡ, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΈ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΏΡΠΎΡΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ(set). ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΅ΡΠ»ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ β Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ ΡΠ΄Π°Π»ΡΡΡΡ. ΠΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π° Π½Π΅ ΡΠΏΠΈΡΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΏΠΈΡΠΎΠΊ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ β Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ ΡΠ°Π·:
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Π‘ΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°:
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π°. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ β ΡΠ΅ΠΌ Π»ΡΡΡΠ΅! ΠΠ»ΠΈΠ½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ·Π½Π°Π» ΠΏΠ°ΡΡ Π΄Π½Π΅ΠΉ Π½Π°Π·Π°Π΄: Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ. ΠΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ:
ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΡΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΠΈΡΠΈ, ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Π° ΡΡΠΎΡΠΊΠ°:
Π ΡΡΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅ ΠΊΠΎΠ΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ, ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΡΠΈΠ½ΡΠ»ΠΈ Π·Π° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π·Π°ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° values() ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ. Π’.ΠΊ. ΡΠ»ΠΎΠ²Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° β ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² ΠΈΡΠΎΠ³Π΅ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ², ΡΡΠΎ Π½Π°ΠΌ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ.
ΠΠ°Π½Π½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΠ»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² Python 3.0 ΠΈ Π±ΡΠΊΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π° Π² Python 2.7, Π Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:
ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ (ΠΏΠ°Ρ) ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ dict(), ΠΊΠΎΡΠΎΡΡΠΉ Π±Π΅ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ, Π° Π²ΡΠΎΡΠΎΠΉ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡ ΡΠΎΠΉ ΠΆΠ΅ Π·Π°Π΄Π°ΡΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΡ Π² Python 2.7
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠΉΠ΄ΡΡ ΡΠ΅ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ»ΠΎΠ²Π°ΡΡ Π² Python. Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ, ΠΎΠΏΠΈΡΠ°ΡΡ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ»ΠΎΠ²Π°ΡΠΈ Ρ ΡΠ°Π½ΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠ°ΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π»ΡΠ΄ΡΠΌ, ΠΈΠ·ΡΡΠ°ΡΡΠΈΠΌ Python, Π½ΠΎ ΠΈ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΌΠ΅Π½Ρ Π½Π°ΡΠΎΠ»ΠΊΠ½ΡΠ» Π²ΠΎΠΏΡΠΎΡ Π½Π° Stack Overflow.
Π ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ CPython Π²Π΅ΡΡΠΈΠΈ 2.7. ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π±ΡΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π² 32-Π±ΠΈΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Python Π½Π° 64-Π±ΠΈΡΠ½ΠΎΠΉ ΠΠ‘, Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ.
Π‘Π»ΠΎΠ²Π°ΡΡ Π² Python
Π‘Π»ΠΎΠ²Π°ΡΡ Π² Python ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ, ΡΠΎ Π΅ΡΡΡ Ρ ΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ (ΠΊΠ»ΡΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅). Π‘Π»ΠΎΠ²Π°ΡΡ β ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π² Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠΎ ΠΊΠ»ΡΡΡ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
ΠΠ»ΡΡΠ°ΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ hashable ΡΠΈΠΏΠΎΠ², ΡΠΎ Π΅ΡΡΡ ΡΠΈΠΏΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ Ρ ΡΡ (Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Ρ Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ __hash__()). ΠΠΎΡΡΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ (list), Π½Π°Π±ΠΎΡ (set) ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΌ ΡΠ»ΠΎΠ²Π°ΡΡ (dict), Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ:
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
Π‘Π»ΠΎΠ²Π°ΡΡ Π² Python ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΠΈΡΡΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ β ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·Π½ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΡΠ°. ΠΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΏΠΎΡΠΎΠ± Π²ΡΡΠ°Π²ΠΊΠΈ ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΡΡΡΡΠΎΠΌ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΊΡΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ. Π Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΊΡΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΊΡΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ Π²Π²ΠΈΠ΄Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ Π½Π° Ρ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ°Ρ Ρ ΡΠ΅ΠΏΠΎΡΠΊΠ°ΠΌΠΈ.
Π ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΡ (PyDictEntry) Π² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β Ρ ΡΡ, ΠΊΠ»ΡΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π‘ΡΡΡΠΊΡΡΡΠ° PyDictObject Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ»ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π²Π΅Π½ 8. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ PyDict_MINSIZE. ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ Π² PyDictObject Π±ΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ma_smalltable ΠΈ ma_table. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ma_smalltable Ρ ΠΏΡΠ΅Π΄Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ PyDict_MINSIZE (ΡΠΎ Π΅ΡΡΡ 8) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠ»ΠΎΠ²Π°ΡΡΠΌ (Π΄ΠΎ 8 ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² PyDictEntry) Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ, ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ: Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² (kwargs). ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ma_table ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ma_smalltable Π΄Π»Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡ (ΡΠΎ Π΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡ ΠΈΠ· 8 ΡΡΠ΅Π΅ΠΊ). ΠΠ»Ρ ΡΠ°Π±Π»ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΡ ma_table Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ma_table Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π²Π½Π° NULL.
ΠΡΠ»ΠΈ ΠΊΠΎΠΌΡ-ΡΠΎ Π²Π΄ΡΡΠ³ Π·Π°Ρ ΠΎΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ PyDict_MINSIZE, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ , Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ Python. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠ°Π²Π½ΡΠΌ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΡΡΡΡΡ .
Π―ΡΠ΅ΠΉΠΊΠ° Π² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅-ΡΠ»Π΅Π½Ρ ΡΡΡΡΠΊΡΡΡΡ
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ
ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΡ Β«Ρ ΠΎΡΠΎΡΠΈΡ Β» Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΉ. Β«Π₯ΠΎΡΠΎΡΠ°ΡΒ» Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Π±ΡΡΡΡΠΎ ΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ. ΠΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΈ Π²Π°ΠΆΠ½ΡΠ΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ (Π΄Π»Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΠΏΠΎΠ²) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡΠΌ. ΠΠΎΠ·ΡΠΌΡΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ»Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» Ρ ΡΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΠ΅ ΡΠΈΡΠ»Π° Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΠ΅ Ρ ΡΡΠΈ, Π° Π΄Π»Ρ ΡΡΡΠΎΠΊ ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΠ΅ Ρ ΡΡΠΈ. ΠΡΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ»ΠΎΡ ΠΎ, Π½Π°ΠΏΡΠΎΡΠΈΠ², Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 2**i Π²Π·ΡΡΠΈΠ΅ i ΠΌΠ»Π°Π΄ΡΠΈΡ Π±ΠΈΡ Ρ ΡΡΠ° ΠΊΠ°ΠΊ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ°Π±Π»ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ, ΠΈ Π΄Π»Ρ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ, ΠΏΡΠΎΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠΎΠ±ΡΠ΅:
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ β ΡΡΠΎ Β«ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΠ΅Β» ΡΡΡΠΎΠΊΠΈ (ΠΊΠ°ΠΊ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅). Π ΠΎΠ±ΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎ Π΄Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
ΠΠ·ΡΡΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ i ΠΌΠ»Π°Π΄ΡΠΈΡ Π±ΠΈΡ Ρ ΡΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎ ΠΊ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡΠΌ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΠ·ΡΠΌΡΠΌ ΡΠΏΠΈΡΠΎΠΊ [i 011 2 & 111 2 = 011 2 = 3
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ°ΡΡΡΠΈΡΠ°Π½, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Β«Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½Π°ΡΒ», ΡΠΎ Π² Π½Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΈΡΡ (Ρ ΡΡ, ΠΊΠ»ΡΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅). ΠΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ° ΡΡΠ΅ΠΉΠΊΠ° Π·Π°Π½ΡΡΠ°, ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄ΡΡΠ³Π°Ρ Π·Π°ΠΏΠΈΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ Ρ ΡΡ (ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ), Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΡΡΠ° ΠΈ ΠΊΠ»ΡΡΠ° Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΡΠ΅ΠΉΠΊΠ΅. ΠΡΠ»ΠΈ Ρ ΡΡ ΠΈ ΠΊΠ»ΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, ΡΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅.
ΠΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ Ρ ΠΈΡΡΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π²Π½ΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΡΠ°Π·Π½ΡΡ ΠΏΠΎ ΡΠΈΠΏΡ ΠΊΠ»ΡΡΠ΅ΠΉ (ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, float, int ΠΈ complex):
Π’ΠΎ Π΅ΡΡΡ ΡΠΎΡ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠΈΠΏΠΎΠΌ ΠΊΠ»ΡΡΠ°, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅. ΠΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΡΡΠ° Π΄Π»Ρ float Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Ρ ΡΡ ΠΎΡ int, Π΅ΡΠ»ΠΈ Π΄ΡΠΎΠ±Π½Π°Ρ ΡΠ°ΡΡΡ ΡΠ°Π²Π½Π° 0.0. ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΡΡΡΡΠ° Ρ ΡΡΠ° Π΄Π»Ρ float, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Python:
Π Ρ ΡΡ ΠΎΡ complex Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Ρ ΡΡ ΠΎΡ float. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Ρ ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½ΠΈΠΌΠ°Ρ ΡΠ°ΡΡΡ ΡΠ°Π²Π½Π° Π½ΡΠ»Ρ:
ΠΠ²ΠΈΠ΄Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈ Ρ ΡΡΠΈ, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΡΡ ΡΠΈΠΏΠΎΠ² ΡΠ°Π²Π½Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²: Python Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠ»ΠΎΠ²Π°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°:
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΡ Π² ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π² Π½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄Π»Ρ Π΄Π²ΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ, ΡΠΎΡΡΠΎΡΡΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π½Π°Π±ΠΎΡΠ° ΠΏΠ°Ρ (ΠΊΠ»ΡΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅), ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π½ΡΠΌ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅ΡΡΠ΄Π½ΠΎΡΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
ΠΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ»ΠΎΠ²Π°ΡΠΈ Π² Python ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΏΠ°ΡΡ (ΠΊΠ»ΡΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅) Π½Π΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΡΠ»ΠΎΠ²Π°ΡΡ. Π‘Π»ΠΎΠ²Π°ΡΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡ ΠΈΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ΅ (ΡΠΎ Π΅ΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²).
ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° Π²ΡΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ 5. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ma_fill ΠΈ ma_used ΡΡΠ°Π»ΠΈ ΡΠ°Π²Π½Ρ 1.
ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° Π²ΡΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ 0. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ma_fill ΠΈ ma_used ΡΡΠ°Π»ΠΈ ΡΠ°Π²Π½Ρ 2.
ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° Π²ΡΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ 4. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ma_fill ΠΈ ma_used ΡΡΠ°Π»ΠΈ ΡΠ°Π²Π½Ρ 3.
ΠΡΠΎΠΈΠ·ΠΎΡΠ»Π° Π²ΡΡΠ°Π²ΠΊΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ 1. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ma_fill ΠΈ ma_used ΡΡΠ°Π»ΠΈ ΡΠ°Π²Π½Ρ 4.
ΠΡΠΎΠ±ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΡΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠ»ΠΎΠ²Π°ΡΡ.
ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ°Π±Π»ΠΈΡΠ° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π° 2/3, Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ Π² 4 ΡΠ°Π·Π°), ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΉΠΊΠ° Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ Ρ ΡΡΡΡΠΎΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° β Π²ΡΠ΅ Β«Π°ΠΊΡΠΈΠ²Π½ΡΠ΅Β» ΡΡΠ΅ΠΉΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, Π° Β«ΠΏΡΡΡΡΠ΅Β» ΠΈ Β«Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅Β» ΡΡΠ΅ΠΉΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Ρ.
Π Π°Π·ΠΌΠ΅Ρ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°Π²Π΅Π½ 32, Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ma_fill ΠΈ ma_used ΡΡΠ°Π»ΠΈ ΡΠ°Π²Π½Ρ 6. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΡΡ:
ΠΠΎΠΈΡΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
ΠΠΎΠΈΡΠΊ Π·Π°ΠΏΠΈΡΠΈ Π² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π½Π°ΡΠΈΠ½Π°ΡΡΡ Ρ ΡΡΠ΅ΠΉΠΊΠΈ i, Π³Π΄Π΅ i Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Ρ ΡΡΠ° ΠΊΠ»ΡΡΠ°. ΠΡΠ»ΠΈ Ρ ΡΡ ΠΈ ΠΊΠ»ΡΡ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ Ρ ΡΡΠΎΠΌ ΠΈ ΠΊΠ»ΡΡΠΎΠΌ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ (ΡΠΎ Π΅ΡΡΡ Π±ΡΠ»Π° ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ ΠΈ Π½Π°Π΄ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΡΡ Π·Π°ΠΏΠΈΡΡ) β Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΏΡΠΎΠ±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½Π° Π·Π°ΠΏΠΈΡΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΡ ΠΈ ΠΊΠ»ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π²ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ Π±ΡΠ»ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π½Ρ, Π½ΠΎ Π·Π°ΠΏΠΈΡΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ
Π Π°Π·ΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° 2/3. Π’ΠΎ Π΅ΡΡΡ Π΄Π»Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ, ΡΠ°Π²Π½ΠΎΠ³ΠΎ 8, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ 6 ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΉΠΊΠ° Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ Ρ ΡΡΡΡΠΎΠΌ Π΅Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΌΠ΅Π½ΡΡΡΡΡ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π²ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ 2/3 ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±ΡΠ»ΠΎ Π²ΡΠ±ΡΠ°Π½ΠΎ ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΎ Π΅ΡΡΡ Π²ΡΡΠ°Π²ΠΊΠ° Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»Π° Π±ΡΡΡΡΠΎ. Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΠ»ΠΎΡΠ½Π΅Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΈΡΡΠΌΠΈ, ΡΡΠΎ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ. Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΆΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΡΠ΅ΡΠ± ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΈΠΌΠΈ ΠΊΡΡ-Π»ΠΈΠ½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ Π² ΡΡΠ΅ΡΠ± ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π²Π΅ΡΡΠΌΠ° ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π°. ΠΠΎΠΏΡΡΠΊΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΡ) ΡΠΌΠ΅Π½ΡΡΠ°Π»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ:
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° PyDictObject Π΄Π»Ρ 64-Π±ΠΈΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΠ‘.
ΠΠ°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°Π²Π΅Π½ 8. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΠΈΡΠ»ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ
ΡΡΠ΅Π΅ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ 6 (ΡΠΎ Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ 2/3 ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°), ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ Π΄ΠΎ 32. ΠΠ°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΠΈΡΠ»ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ 22, ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ Π΄ΠΎ 128. ΠΡΠΈ 86 ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ Π΄ΠΎ 512, ΠΏΡΠΈ 342 β Π΄ΠΎ 2048 ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ
ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π²Π΅Π½ 4, Π΅ΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅ 50000 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈ 2 β Π΄Π»Ρ ΡΠ°Π±Π»ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ.
Π£Π²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°Π±Π»ΠΈΡΡ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΡΠ΅Π΄Π½ΡΡ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΠΎΡΡΡ, ΡΠΎ Π΅ΡΡΡ ΡΠ°Π·Π±ΡΠΎΡΠ°Π½Π½ΠΎΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ (ΡΠΌΠ΅Π½ΡΡΠ°Ρ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ), Π·Π° ΡΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄Π»Ρ ΡΠ°ΡΡΡΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ.
ΠΠ±ΡΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠ»ΠΎΠ²Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π² 4 ΠΈΠ»ΠΈ 2 ΡΠ°Π·Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ»ΠΎΠ²Π°ΡΡ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡΡ. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ, Π΅ΡΠ»ΠΈ ma_fill (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅Π½ΡΠ»Π΅Π²ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ, ΡΡΠΌΠΌΠ° Β«Π°ΠΊΡΠΈΠ²Π½ΡΡ Β» ΠΈ Β«ΠΏΡΡΡΡΡ Β» ΡΡΠ΅Π΅ΠΊ) Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ma_used (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Β«Π°ΠΊΡΠΈΠ²Π½ΡΡ Β» ΡΡΠ΅Π΅ΠΊ), ΡΠΎ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ΅ΠΉ Π±ΡΠ»ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΎ.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
ΠΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ PyDict_DelItem.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΠΊΠ»ΡΡΡ, Ρ
ΠΎΡΡ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ. Π ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Ρ
ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΠΈΡΠΊ Π·Π°ΠΏΠΈΡΠΈ Π² Ρ
ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΡ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ lookdict_string ΠΈΠ»ΠΈ lookdict. Π ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΈ Ρ
ΡΡΠ΅ΠΌ Π½Π°ΠΉΠ΄Π΅Π½Π°, ΠΊΠ»ΡΡ ΡΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π²ΡΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Β«ΠΏΡΡΡΠΎΠΉΒ» (ΡΠΎ Π΅ΡΡΡ me_key = dummy), Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ β Π² NULL (me_value = NULL). ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ma_used ΡΠΌΠ΅Π½ΡΡΠΈΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π° ma_fill ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ma_used ΡΡΠ°Π»Π° ΡΠ°Π²Π½Π° 4, Π° ma_fill ΠΎΡΡΠ°Π»Π°ΡΡ ΡΠ°Π²Π½ΠΎΠΉ 5, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ΅ΠΉΠΊΠ° Π½Π΅ Π±ΡΠ»Π° ΡΠ΄Π°Π»Π΅Π½Π°, Π° Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π±ΡΠ»Π° ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° ΠΊΠ°ΠΊ Β«ΠΏΡΡΡΠ°ΡΒ» ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΡΠ΅ΠΉΠΊΡ Π² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ΅.
Π Π°Π½Π΄ΠΎΠΌΠΈΠ·Π°ΡΠΈΡ Ρ ΡΡΠ΅ΠΉ
ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ Ρ Dictionary ΠΈ ConcurrentDictionary
ΠΡΠ°ΠΊ, ΠΏΠΎΠ΅Ρ Π°Π»ΠΈ.
ΠΡΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΡΠ°ΠΌΠΈΠΌ Dictionary, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π·Π΄Π΅Π».
Dictionary ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Hashtable.
ΠΠ΄Π΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈΠ±ΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ (Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ), Π»ΠΈΠ±ΠΎ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΏΡΠΈΡΠ΅ΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (3). ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ 2 Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ β int[] buckets ΠΈ Entry[] entries. ΠΠ΅ΡΠ²Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, Π° ΠΎΠ½Π°, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, β ΡΠ°ΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠ°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅:
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Ρ ΡΡΠΊΠΎΠ΄ Π΅Π³ΠΎ ΠΊΠ»ΡΡΠ° ΠΈ Π·Π°ΡΠ΅ΠΌ β ΠΈΠ½Π΄Π΅ΠΊΡ ΠΊΠΎΡΠ·ΠΈΠ½Ρ Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ:
ΠΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π½Π΅Ρ Π»ΠΈ ΡΠΆΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Π΅ΡΡΡ β ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Add Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π° Π½ΠΎΠ²ΡΠΉ. ΠΡΠ»ΠΈ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ, ΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ (Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΌ ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ).
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΠ΅ΡΡΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ β O(n).
ΠΡΠ»ΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΡ (ΡΠΎ Π΅ΡΡΡ Π² ΠΊΠΎΡΠ·ΠΈΠ½Π΅ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² bucketNum ΡΠΆΠ΅ Π΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ), ΡΠΎ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, Π΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΊΠΎΡΠ·ΠΈΠ½Π΅, Π° ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° β Π² Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅ next.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ. ΠΠ°Π½Π½ΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ chaining. ΠΡΠ»ΠΈ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΈΡΠ»ΠΎ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Π²Π΅Π»ΠΈΠΊΠΎ (Π±ΠΎΠ»ΡΡΠ΅ 100 Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ), ΡΠΎ ΠΏΡΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ
ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Ρ
ΡΡΠΊΠΎΠ΄ΠΎΠ².
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ O(1) ΠΈΠ»ΠΈ O(n) Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
ΠΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΡ Π·Π°ΡΠΈΡΠ°Π΅ΠΌ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ next Π΄ΡΡΠ³ΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈ Π½Π΅ΠΎΡ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΠΎΠ»Π΅ freeList, Π° ΡΡΠ°ΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β Π² ΠΏΠΎΠ»Π΅ next. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ:
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ½ΠΎΠ²Π° O(1) ΠΈΠ»ΠΈ O(n) Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ.
ΠΡΡΠ³ΠΎΠ΅
Π’Π°ΠΊ ΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ 2 ΠΌΠΎΠΌΠ΅Π½ΡΠ°:
1) ΠΡΠΈ ΠΎΡΠΈΡΡΠΊΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ, Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. Π’ΠΎ Π΅ΡΡΡ, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ, Π²Ρ ΠΏΡΠΎΡΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ ΠΌΠ΅ΡΡΠΎ.
2) GetEnumerator ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ entires (ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(1)). ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ β ΠΎΠ½ΠΈ Π²Π΅ΡΠ½ΡΡΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΄Π°Π»ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈ Π½ΠΎΠ²ΡΠ΅ β ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π΅ ΡΡΠΎΠΈΡ (ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ).
Π’Π°ΠΊ ΠΈ ΡΡΠΎ ΠΆΠ΅ Ρ ConcurrentDictionary?
ΠΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, Π΅ΡΡΡ 2 ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² Π»ΠΎΠ± Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ β ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π²ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ»ΠΎΠ²Π°ΡΡ Π² Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π²ΡΠ΅ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² Π½ΠΈΡ ΠΆΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ, ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ β Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠ΅ lock, Π΄Π° ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° 1 ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠ³ Π±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Π Microsoft ΠΏΠΎΡΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ ΠΈ Dictionary ΠΏΡΠΈΡΠ΅ΡΠΏΠ΅Π» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π’Π°ΠΊ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈ Π΅Π³ΠΎ ΠΊΠΎΡΠ·ΠΈΠ½, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ Π½ΠΈΠΌ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°
Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΌΠΎΠ³ Π±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΎΠΉ ΡΡ Π΅ΠΌΠΎΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ΅ ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ² entries, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΡΡΠ°Π»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΡΠ½ΡΠΉ single linked list: volatile Entry[] m_buckets (ΠΏΠΎΠ»Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΎ ΠΊΠ°ΠΊ volitale, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΏΡΡΠ°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, Π° Π΄ΡΡΠ³ΠΎΠΉ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ).
Π ΠΈΡΠΎΠ³Π΅ ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΡΡΠ°Π»ΠΈ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π²ΠΎΡ ΡΠ°ΠΊ:
lockNo β ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ β object[] m_locks. ΠΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·Π½ΡΠΌ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΊΠΎΡΠ·ΠΈΠ½Ρ Π² ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ. Π Π°Π·ΠΌΠ΅Ρ ΡΡΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ConcurrencyLevel ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ. ΠΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ ΡΠΈΡΠ»ΠΎ_ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² * 4). Π§Π΅ΠΌ Π²ΡΡΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ, Π½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΡΠ°Π½ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π΄ΠΎΡΠΎΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΠ΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ (Resize, ToArray, Count, IsEmpty, Keys, Values, CopyTo, Clear). Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ lock (ΠΊΠ°ΠΊ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΠΊΠΎΡΠ·ΠΈΠ½ ΠΊ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΡΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ) ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π½Π°Π΄ΠΎ β ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠΈΡΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π΅ O(1), Π° ΡΠΆΠ΅ O(n) Π·Π° ΡΡΠ΅Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΠ²ΡΠ·Π½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ². Π§ΡΠΎΠ±Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠ·ΠΈΡΡ ΡΠΈΡΠ»ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ Π½Π΅ 3, Π° 31.
ΠΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅Π»ΠΈ Π²ΠΈΠ΄:
ΠΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈ Π²Π΅ΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅ΡΡΡ Π»ΠΈ ΡΠΆΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»ΡΡ ΠΈ Π΅ΡΠ»ΠΈ Π½Π΅Ρ β Π΄ΠΎΠ±Π°Π²ΠΈΡΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ β ΡΠΏΠ΅ΡΠ²Π° Π½Π°Π΄ΠΎ Π½Π°ΠΉΡΠΈ ΡΠ·Π΅Π» ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄Π°Π»ΠΈΡΡ.
ΠΠΏΡΠΎΡΠ΅ΠΌ, Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π½Π΅ Π½ΡΠΆΠ½Π° Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ β ΡΡΠΎ TryGetValue, GetEnumerator, ContainsKey ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΡΠΈΡ. ΠΠΎΡΠ΅ΠΌΡ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΊΠΎΡΠ·ΠΈΠ½ Π²ΠΈΠ΄Π½Ρ Π·Π° ΡΡΠ΅Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎ ΠΏΠΎΠ»Π΅ volatile, Π»ΡΠ±ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΏΡΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ Π·Π°ΠΌΠ΅Π½Ρ ΠΈΠΌ ΡΡΠ°ΡΠΎΠ³ΠΎ, Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ·Π΅Π».
ΠΡΡΠ³ΠΎΠ΅
Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ dictionary.Select(x => x.Value).ToArray(), ΡΠ΅ΠΌ dictionary.Values.ToArray()
Π ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΠΎ β Π²ΠΌΠ΅ΡΡΠΎ Β«Π»ΡΡΡΠ΅Β» ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Β«Π±ΡΡΡΡΠ΅Π΅Β» β Π·Π° ΡΡΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, Π½ΠΎ Π½Π°Π΄ΠΎ ΠΏΡΠΈΠ½ΡΡΡ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ Π²Π΅ΡΠ½ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.