0 / 0 / 0
Регистрация: 16.03.2020
Сообщений: 69

Вывод количества пунктов меню

09.09.2021, 07:53. Показов 2664. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В файле data.json в рабочей директории находится описание меню для приложения.
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Формат вывода
Выведите одно число – количество пунктов меню (menuitem) в разделе настройки всплывающих окон (popup) для объекта меню (menu).
Обратите внимание, что определенных полей с некоторыми из требуемых имен (menu, popup, menuitem) может не быть в данных, в этом случае нужно считать, что требуемых пунктов меню ноль.

Пример 1

Ввод:

{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}


Вывод: 3
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2021, 07:53
Ответы с готовыми решениями:

Вывод дочерних пунктов в меню
Подскажите пожалуйста, какое условие указать, чтобы при выборе родительского пункта меню выводились только его дочерние пункты? Из базы...

Вывод пунктов меню: InsertMenu(...)
помогите пожалуйста. как мне сделать так чтоб программа выводила пункты меню : InsertMenu (...); #include <Windows.h> ...

Вывод содержимого пунктов меню на одну и ту же страницу
Добрый вечер! Я новичок в веб (базовый html, css). В процессе верстки сайта столкнулась с проблемой. Хотелось бы выложить картинки...

9
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.09.2021, 10:07
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import json
 
 
def foo(d):
    if 'menuitem' in d.keys():
        return len(d['menuitem'])
    for k in d.keys():
        if isinstance(d[k], dict):
            return foo(d[k])
 
 
s = '''{"menu": 
{
    "id": "file",
    "value": "File",
    "popup": {
        "menuitem": [
            {"value": "New", "onclick": "CreateNewDoc()"},
            {"value": "Open", "onclick": "OpenDoc()"},
            {"value": "Close", "onclick": "CloseDoc()"}
        ]
    }
}}'''
 
data = json.loads(s)
print(foo(data))
3
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
09.09.2021, 10:14
iSmokeJC, только вроде в foo() нужно в конце добавить return 0:
Обратите внимание, что определенных полей с некоторыми из требуемых имен ( ... menuitem) может не быть в данных, в этом случае нужно считать, что требуемых пунктов меню ноль
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.09.2021, 10:16
Gdez, а, ну да, чето упустил.
Ну, пусть ТС сам сделает хоть что-нибудь
0
0 / 0 / 0
Регистрация: 16.03.2020
Сообщений: 69
10.09.2021, 06:12  [ТС]
Для проверки наличия имен (menu, popup...) Добавляю условие if перед if 'menuitem' in d.keys():...
получается так:
if 'popup' in d.keys() :
if 'menuitem' in d.keys():


Но получается ошибка. Как правильно добавить ещё одно условие?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
10.09.2021, 09:06
elif ?

Добавлено через 19 минут
mikhail8899, вообще, если так разобраться, вопрос не полон. Можно, конечно, притянуть за уши...
Python
1
2
3
4
5
6
def foo(d):
    if 'popup' in d.keys():
        return len(d['popup']['menuitem'])
    for k in d.keys():
        if isinstance(d[k], dict):
            return foo(d[k])
1
0 / 0 / 0
Регистрация: 16.03.2020
Сообщений: 69
12.09.2021, 15:34  [ТС]
Почему не отрабатывает множественное условие? Что не так делаю?:
Python
1
2
3
4
5
6
7
8
def foo(d):
if ('menu' in d.keys() and 'popup' in d.keys() and 'menuitem' in d.keys()):
    return len(d[menu]['popup']['menuitem'])
else:
    quit("0")
for k in d.keys():
    if isinstance(d[k], dict):
         return foo(d[k])
Последовательно несколько if, тоже не работает. Отрабатывает только первое условие:
Python
1
2
3
4
5
6
7
8
if ..:
   return....
else:
    ....
if ....:
    return....
else:
    ....
Необходимо проверить наличие menu, poput, nenuutem. И в случае если все три условия выполняются, то вывести число пунктов меню. Если хоть одного нет из условия, то вывести 0
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.09.2021, 18:26
Какая-то дичь...
Ну вот и решение дикое ))))))
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import re
 
s = '''
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
'''
 
if all(map(lambda x: x in s, ['menu', 'popup', 'menuitem'])):
    print(len(re.search(r'(?ms)(?<=menuitem": \[)(.*?)]', s).group(1).split('},')))
1
0 / 0 / 0
Регистрация: 16.03.2020
Сообщений: 69
14.09.2021, 07:35  [ТС]
Спасибо! Все красиво. То что надо
0
0 / 0 / 0
Регистрация: 19.09.2021
Сообщений: 1
19.09.2021, 19:22
Еще более дикое

Python
1
2
3
4
5
6
7
8
import json
 
with open('data.json', 'r', encoding='utf-8') as f: #открыли файл с данными
    data = json.load(f)
    try:
        print(len(data['menu']['popup']['menuitem']))
    except:
        print(0)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2021, 19:22
Помогаю со студенческими работами здесь

Вывод меню из базы. Создание пунктов в админке
Здравсвуйте. Ни как не могу нагуглить как хранить и выводить меню из базы mysql с помощью php. А так же изменение пунктов меню через...

Создать скрипт, осуществляющий вывод меню, состоящего из следующих пунктов
Создать скрипт, осуществляющий вывод меню, состоящего из следующих пунктов: текущий пользователь, объем используемой памяти, объем...

Вывод дочерних пунктов одного пункта меню в разные модули (с исключением)
Здравствуйте, Уважаемые коллеги. Joomla 2.5.28. Имеется меню - родитель (It-решения) url: it-resheniya В нем есть около 100 дочерних...

Создать классы работы с меню, с возможностью иерархии пунктов меню
Помогите пожалуйста с лабораторной по ООП, мало что понимаю... Общие требования: В независимости от индивидуального варианта должны...

Центровка пунктов в выпадающем меню по центру ul блока (Битрикс меню)
Всем привет! Требуется в выпадающем меню, т.е. в самых блоках выпадающего меню, сделать чтобы все ссылки были в центре, т.е. чтобы они...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru