Отримайте довжину словника в Python
Щоб обчислити довжину словника, ми можемо використати вбудований у Python метод len(). Метод len() повертає кількість ключів у a Словник Python .
Синтаксис Python Dict len().
Синтаксис: len (Dict)
Повернення: Він повертає ціле число, яке є довжиною рядка.
Name:Steve Age:30 Designation:Programmer
Базовий приклад знаходження довжини словника
Python3
dict1> => {> 'Name'> :> 'Steve'> ,> 'Age'> :> 30> ,> 'Designation'> :> 'Programmer'> }> print> (> 'Dictionary:'> , dict1)> print> (> 'Length of dictionary:'> ,> len> (dict1))> |
Вихід:
Dictionary: {'Name': 'Steve', 'Age': 30, 'Designation': 'Programmer'} Length of dictionary: 3 Пошук довжини вкладеного словника
Зверніть увагу на такі деталі про людину:
Name:Steve Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India
Проблема під час спроби знайти довжину вкладеного словника:
Python3
# A nested dictionary> dict2> => {> # outer dictionary> > 'Name'> :> 'Steve'> ,> > 'Age'> :> 30> ,> > 'Designation'> :> 'Programmer'> ,> > 'address'> : {> # inner dictionary> > 'Street'> :> 'Brigade Road'> ,> > 'City'> :> 'Bangalore'> ,> > 'Country'> :> 'India'> > }> }> print> (> 'len() method :'> ,> len> (dict2))> print> (> 'len() method with keys() :'> ,> len> (dict2.keys()))> print> (> 'len() method with values():'> ,> len> (dict2.values()))> |
Вихід:
метод len() із keys(): 4
метод len() зі значеннями(): 4
Тут, який би метод ви не застосували, ви отримаєте лише «4» як результат. Але фактична кількість записів – «7». Ключами є ім’я, вік, посада, адреса, вулиця, місто та країна. Метод розглядає зовнішній словник, який є значенням для одного з ключів, як єдине значення.
Щоб подолати цю проблему, нам потрібно явно додати довжину внутрішнього словника до зовнішнього. Його можна закодувати, як наведено нижче:
Python3
# A nested dictionary> dict2> => {> > 'Name'> :> 'Steve'> ,> > 'Age'> :> 30> ,> > 'Designation'> :> 'Programmer'> ,> > 'address'> :> > {> > 'Street'> :> 'Brigade Road'> ,> > 'City'> :> 'Bangalore'> ,> > 'Country'> :> 'India'> > }> > }> # total length = length of outer dict +> # length of inner dict> length> => len> (dict2)> +> len> (dict2[> 'address'> ])> print> (> 'The length of the nested dictionary is:'> , length)> |
Вихід:
The length of the nested dictionary is: 7
Тепер працює нормально!!! Однак чи можна явно запрограмувати щоразу додавати довжину внутрішніх словників? Що робити, якщо ми не знаємо заздалегідь, скільки існує внутрішніх словників? Тепер розглянемо наступну деталь:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street:Brigade Road City:Bangalore Country:India
Тут ми маємо два внутрішніх словника. Це не оптимізований спосіб явно додавати довжину внутрішніх словників кожного разу. Ми можемо вирішити цю проблему, поєднавши isinstance() з методом len(). Ідея полягає в тому, щоб спочатку зберегти довжину всього словника в змінній (скажи тут «довжина») . Потім перегляньте всі значення () словника та перевірте, чи є він екземпляром dict. Якщо «Правда» потім визначається довжина цього внутрішнього словника та додається до змінної довжина . Таким чином можна визначити загальну довжину вкладеного словника.
Приклад 1: Динамічне визначення довжини вкладеного словника за допомогою циклу for:
Коли ми маємо більше ключів у словнику, значення якого знову є словниками. Потім нам потрібно перевірити тип значення кожного ключа, якщо це словник, тоді ми використовуємо len() для значення та додаємо значення до довжини зовнішнього словника.
Python3
# nested dictionary> dict2> => {> > 'Name'> :> > {> > 'first_name'> :> 'Steve'> ,> > 'Last_name'> :> 'Jobs'> > },> > 'Age'> :> 30> ,> > 'Designation'> :> 'Programmer'> ,> > 'address'> :> > {> > 'Street'> :> 'Rockins Road'> ,> > 'City'> :> 'Bangalore'> ,> > 'Country'> :> 'India'> > }> > }> # storing the outer dictionary length> length> => len> (dict2)> # iterating to find the length> # of all inner dictionaries> for> i> in> dict2.values():> > # checking whether the value is a dictionary> > if> isinstance> (i,> dict> ):> > length> +> => len> (i)> > print> (> 'The length of the dictionary is'> , length)> |
Вихід:
The length of the dictionary is 9
Примітка: Цей підхід працюватиме лише тоді, коли вкладеність словників становить лише 2 рівні.
Якщо словник додатково вкладений, як показано нижче:
Name: first name:Steve last name:Jobs Age:30 Designation:Programmer address: Street: St_number:4 St_name:Brigade Road City:Bangalore Country:India
Приклад 2. Використання рекурсії для визначення довжини вкладеного словника:
Тут ми використали рекурсивну функцію count_nested_len() для підрахунку довжини кожного словника, ми повторюємо ключі словників, як тільки значення є словником, ми повторно використовуємо цей словник.
Python3
# nested dictionary> dict2> => {> > 'Name'> :> > {> > 'first_name'> :> 'Steve'> ,> > 'Last_name'> :> 'Jobs'> > },> > 'Age'> :> 30> ,> > 'Designation'> :> 'Programmer'> ,> > 'address'> :> > {> > 'Street'> :> > {> > 'st_number'> :> 4> ,> > 'st_name'> :> 'Rockins Road'> > },> > 'City'> :> 'Bangalore'> ,> > 'Country'> :> 'India'> > }> > }> # we use recursive function to count> # length of nested dictionaries> def> count_nested_len(d):> > length> => len> (d)> > for> key, value> in> d.items():> > if> isinstance> (value,> dict> ):> > length> +> => count_nested_len(value)> > return> length> print> (> 'Nested dictionary length:'> ,> > count_nested_len(dict2))> |
Вихід:
Nested dictionary length: 11
Підхід 3: Використання словникового розуміння
Python3
# вкладений словник
dict2 ={
«Ім’я»:
{
'first_name':'Стів',
«Прізвище»: «Вакансії»
},
«Вік»: 30,
«Позначення»: «Програміст»,
«адреса»:
{
«Вулиця»:
{
‘st_number’: 4,
‘st_name’:’Рокінс-роуд’
},
«Місто»: «Бангалор»,
«Країна»: «Індія»
}
}
# Використання розуміння словника для визначення довжини вкладеного словника
length = len({k: v для k, v у dict2.items()})
print(Довжина словника становить, довжина)
#Цей код надав Едула Віней Кумар Редді
МЕТОД 4: Використання виразу генератора з функцією sum().
ПІДХІД:
Вираз генератора використовується для створення послідовності одиниць, де кожна 1 відповідає ключу в словнику. Потім функція sum() використовується для додавання одиниць, що дає довжину словника.
АЛГОРИТМ:
1. Створіть вираз-генератор, який генерує послідовність одиниць для кожного ключа в словнику.
2. Використовуйте функцію sum(), щоб додати одиниці в послідовності.
3. Повертає суму, яка представляє довжину словника.
Python3
dict1> => {> 'Name'> :> 'Steve'> ,> 'Age'> :> 30> ,> 'Designation'> :> 'Programmer'> }> length> => sum> (> 1> for> key> in> dict1)> print> (length)> |
Вихід
3
Часова складність цього підходу становить O(n), де n – кількість ключів у словнику.
Просторова складність цього підходу становить O(1)