Найти Ρ‚Π΅ΠΌΡƒ
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

🐍 Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹: Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΉ инструмСнт для Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

ОглавлСниС

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΡƒΠ·Π½Π°Π΅ΠΌ, Π³Π΄Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ словарСй.

Данная ΡΡ‚Π°Ρ‚ΡŒΡ являСтяся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ. Бсылка Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π».

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Π°?

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ понятиС Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹, для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π₯Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ – это процСсс прСобразования любого Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΈΠ»ΠΈ строки символов Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ получаСтся Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ фиксированной Π΄Π»ΠΈΠ½Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‡Π΅ΠΌ с исходным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΆΠ΅ извСстныС ΠΊΠ°ΠΊ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹ хранят ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сотрудника ΠΈ Π΅Π³ΠΎ имя) Π² спискС, доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ индСкс.

Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹

Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹ – это ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ быстрСС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ поиск.

ИдСя Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² распрСдСлСнии записСй (ΠΏΠ°Ρ€ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΏΠΎ массиву Π±Π»ΠΎΠΊΠΎΠ². Учитывая ΠΊΠ»ΡŽΡ‡, функция Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ вычисляСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ индСкс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ подсказываСт, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ запись. ИспользованиС индСкса вмСсто исходного ΠΊΠ»ΡŽΡ‡Π° Π΄Π΅Π»Π°Π΅Ρ‚ Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹ особСнно ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΡ… Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ поиск.

  Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Π°
Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Π°

Для вычислСния Ρ…ΡΡˆ-значСния, ΠΈΠ»ΠΈ просто Ρ…ΡΡˆΠ°, Ρ…ΡΡˆ-функция Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ значСния Π² соотвСтствии с матСматичСским Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ тСорСтичСски Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹, Ρ‚ΠΎ Ρ…ΡΡˆ-функция сопоставляСт ΠΊΠ»ΡŽΡ‡ΠΈ Π² соотвСтствии с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

БущСствуСт мноТСство Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы. Основная Ρ†Π΅Π»ΡŒ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ запрос.

НаиболСС распространСнными ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

  1. ΠœΠ΅Ρ‚ΠΎΠ΄ дСлСния. Π­Ρ‚ΠΎ самый простой ΠΈ самый быстрый способ вычислСния Ρ…ΡΡˆ-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Для этого Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ остаток Π² качСствС Ρ…ΡΡˆΠ°.
  2. ΠœΠ΅Ρ‚ΠΎΠ΄ срСднСго ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°. Находит ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, Π·Π°Ρ‚Π΅ΠΌ Π±Π΅Ρ€Π΅Ρ‚ срСдниС Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΡ… Π² качСствС индСкса элСмСнта.
  3. ΠœΠ΅Ρ‚ΠΎΠ΄ умноТСния. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ…ΡΡˆ-индСкс ΠΈΠ· Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части умноТСния ΠΊΠ»ΡŽΡ‡Π° Π½Π° большоС вСщСствСнноС число.
  4. ΠœΠ΅Ρ‚ΠΎΠ΄ складывания. ΠšΠ»ΡŽΡ‡ сначала дСлится Π½Π° Ρ€Π°Π²Π½Ρ‹Π΅ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ части, ΠΈΡ‚ΠΎΠ³ΠΈ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСлится Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся Ρ…ΡΡˆ.

Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹ Π² Python

Π’ Python Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· встроСнный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… словаря. Как ΠΈ Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹, словари хранят Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΠ°Ρ€Π°Ρ… {ΠΊΠ»ΡŽΡ‡:Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅}. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ создадитС ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ (смотритС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π»), Python ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для вычислСния Ρ…ΡΡˆΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°.

Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ Python ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами:

  1. Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты послС создания словаря.
  2. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ упорядочСны. Π’ Python 3.6 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях словари Π±Ρ‹Π»ΠΈ нСупорядочСнными, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡ… элСмСнты Π½Π΅ ΠΈΠΌΠ΅Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ порядка. Однако послС Π²Ρ‹Ρ…ΠΎΠ΄Π° Python 3.7 словари стали ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ порядок. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создаСтС ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Python, ΠΊΠ»ΡŽΡ‡ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ порядку, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² исходном ΠΊΠΎΠ΄Π΅.
  3. ΠšΠ»ΡŽΡ‡ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ – это всСгда Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, словари Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ строки, числа ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ. И Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΊΠ»ΡŽΡ‡ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ измСняСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ список.
  4. ΠšΠ»ΡŽΡ‡ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹. ΠšΠ»ΡŽΡ‡ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… словаря ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ. Если ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ записи Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π˜Ρ‚Π°ΠΊ, Ссли Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ задавались вопросом ΠΎ различиях ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ ΠΈ словарями – ΠΎΡ‚Π²Π΅Ρ‚ прост. Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ – это просто собствСнная рСализация Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚ Π² Python. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Π° – это структура Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создана с использованиСм Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π³Π΄Π΅ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ – это конкрСтная Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Π°, основанная Π½Π° Python, Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ опрСдСляСтся классом dict Π² Python.

🐍 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»

πŸπŸŽ“ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ Python

ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° собСса ΠΏΠΎ PythonΒ»

🐍🧩 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Python

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Python для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ PythonΒ»

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ словари Python

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со словарями. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ словари, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с нашим ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠΌ ΠΏΠΎ словарям Python: 🐍 Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π§Π°ΡΡ‚ΡŒ 6: ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со словарями ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ словарСй.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ словаря

Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ словари Π² Python довольно просто. НуТно просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ запятыми. Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ dict(). Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сопоставляСт столицы ΠΈ страны:

Π§Ρ‚ΠΎΠ±Ρ‹ вывСсти Π½Π° экран содСрТимоС словаря:

Π’Π°ΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π² словарС – Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π² случаС дублирования ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Python Π½Π΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π·Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ послСдний экзСмпляр ΠΊΠ»ΡŽΡ‡Π° ΠΈ просто ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² этом сами:

Поиск Π² словарС

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² словарС, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ Π² скобках, ΠΈ Python Π²Π΅Ρ€Π½Π΅Ρ‚ связанноС с Π½ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠ»ΡŽΡ‡Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² словарС, Python выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ это, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠ»ΡŽΡ‡Π°ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .get(). Π’ случаС Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π° ΠΎΠ½ просто Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ None:

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² словарС

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ столица-страна:

Π’ΠΎΡ‚ ΠΆΠ΅ синтаксис ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для обновлСния значСния, связанного с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ. Π”Π°Π²Π°ΠΉΡ‚Π΅ исправим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, связанноС с Π‘Π΅Ρ€Π»ΠΈΠ½ΠΎΠΌ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΏΠ°Ρ€ Π² нашСм словарС:

Или, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² словарС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ .clear():

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° словарСй

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ .items(), ΠΈ Python ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ список ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ:

Аналогично, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ список с ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈ значСниями, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ .keys() ΠΈ .values() соотвСтствСнно:

ΠžΠ±Π»Π°ΡΡ‚ΠΈ примСнСния Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚

Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹ – это ΠΌΠΎΡ‰Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ практичСски повсСмСстно Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌ ΠΌΠΈΡ€Π΅. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ список ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚:

  1. Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для индСксирования ΠΈ поиска ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹ для хранСния проиндСксированных Π²Π΅Π±-страниц.
  2. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ кэшСм. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹ для упорядочивания кэш-памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ быстрый доступ ΠΊ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.
  3. ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ. Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² области ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ. ΠšΡ€ΠΈΠΏΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹ для обСспСчСния цСлостности Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ бСзопасных Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСтях.
  4. Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½. Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹ Π»Π΅ΠΆΠ°Ρ‚ Π² основС Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°. Когда Π² сСти осущСствляСтся транзакция, Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π½Π΅ΠΉ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π΅ содСрТит Ρ…ΡΡˆ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°, образуя Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π±Π»ΠΎΠΊΠΎΠ².

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ ΠΈ распространСнныС ошибки

Π₯эш-ΠΊΠ°Ρ€Ρ‚Ρ‹ – ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ эффСктивныС структуры Π΄Π°Π½Π½Ρ‹Ρ…. Однако ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π»ΠΈΡˆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, связанныС с Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… рСкомСндациях ΠΈ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ….

ΠšΠ»ΡŽΡ‡ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ нСизмСняСмыми

Π­Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ: Ссли содСрТимоС ΠΊΠ»ΡŽΡ‡Π° измСнится, Ρ‚ΠΎ Ρ…ΡΡˆ-функция Π²Π΅Ρ€Π½Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΈ Python Π½Π΅ смоТСт Π½Π°ΠΉΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, связанноС с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ.

УстранСниС ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ Ρ…ΡΡˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹

Π₯Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт сопоставляСтся с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ мСстополоТСниСм Π² Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Но ΠΈΠ½ΠΎΠ³Π΄Π° Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ для Ρ€Π°Π·Π½Ρ‹Ρ… исходных Π΄Π°Π½Π½Ρ‹Ρ…. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ дСлСния, Ρ€Π°Π·Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ остаток ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ модуля дСлСния), Ρ‡Ρ‚ΠΎ создаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠ΅ΠΉ. Коллизии Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ, ΠΈ для этого сущСствуСт нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π² случаС со словарями, Python справляСтся с ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ коллизиями Β«ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈΒ».

ПониманиС коэффициСнта Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ опрСдСляСтся ΠΊΠ°ΠΊ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ количСства элСмСнтов Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ количСству Π±Π»ΠΎΠΊΠΎΠ². Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, насколько Ρ…ΠΎΡ€ΠΎΡˆΠΎ распрСдСлСны Π΄Π°Π½Π½Ρ‹Π΅. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‡Π΅ΠΌ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½Π΅Π΅ Π΄Π°Π½Π½Ρ‹Π΅ располоТСны, Ρ‚Π΅ΠΌ мСньшС Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ столкновСний. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π² случаС со словарями, Python автоматичСски Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Ρ€ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ Ρ…ΡΡˆ-функция Π΄ΠΎΠ»ΠΆΠ½Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ количСство ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ, Π±Ρ‹Ρ‚ΡŒ простой Π² вычислСнии ΠΈ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ элСмСнты Π² Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π₯отя это ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ для нСбольшого количСства элСмСнтов, ΠΏΡ€ΠΈ большом объСмС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² это нСцСлСсообразно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ памяти ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ΅Π½Π΅Π΅ эффСктивными.

Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ – это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ?

Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ – это Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ подходящими для Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ потрСбностСй. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², словари Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ распространСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ индСксированиС, срСз ΠΈ объСдинСниС, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈΡ… ΠΌΠ΅Π½Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТными для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условиях.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚ Π² Python

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, Π² Python Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· встроСнныС словари. Однако Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ инструмСнты Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ возмоТности Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Defaultdict

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠ»ΡŽΡ‡Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² вашСм словарС, Python Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ KeyError. ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² поиск ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .get(). Однако Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ способом являСтся использованиС Defaultdict, доступного Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ collections. Defaultdict ΠΈ словари – это ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. ЕдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Defaultdict Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ прСдоставляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.

Counter (счСтчик)

Counter – это подкласс словаря Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для подсчСта Ρ…ΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ элСмСнты хранятся ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ΠΈ, Π° ΠΈΡ… количСство – ΠΊΠ°ΠΊ значСния.

БущСствуСт нСсколько способов ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ счСтчика:

  1. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ элСмСнтов.
  2. ΠšΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΈ значСниями Π² словарС.
  3. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сопоставлСния имя:Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Класс counter Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ряд ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для выполнСния стандартных вычислСний.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Scikit-learn

Scikit-learn, Ρ‚Π°ΠΊΠΆΠ΅ извСстная ΠΊΠ°ΠΊ sklearn, – это надСТная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° машинного обучСния Π½Π° Python с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Она Π±Ρ‹Π»Π° создана, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ машинного обучСния ΠΈ статистичСских ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π° Python.

Sklearn Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Один ΠΈΠ· самых распространСнных – ΠΌΠ΅Ρ‚ΠΎΠ΄ CountVectorizer. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСобразования Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ тСкста Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ Π½Π° основС частоты встрСчаСмости ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π²ΠΎ всСм тСкстС. CountVectorized особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² контСкстС Π°Π½Π°Π»ΠΈΠ·Π° тСкста.

-2

Π’ sklearn Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ FeatureHasher ΠΈ DictVectorizer.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ вас с Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ этого руководства ΠΏΠΎ Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Π°ΠΌ. ΠœΡ‹ надССмся, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ…Π΅Ρˆ-ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ словари Python. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ словарях ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… условиях, ΠΌΡ‹ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ наш ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ словарям Python:

И Ρ€Π΅ΡˆΠΈΡ‚ΡŒ нСсколько Π·Π°Π΄Π°Ρ‡:

Наука
7 ΠΌΠ»Π½ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ΡΡ