Отримайте довжину словника в 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)