Найти - Пользователи
Полная версия: Как проверить наличие словаря в кортеже?
Начало » Python для новичков » Как проверить наличие словаря в кортеже?
1 2 3 4
MiK
Пробую по всякому, но не получается?
Как сделать правильно?
FishHook
MiK
Пробую по всякому
Дюже интересно посмотреть на пробы

def dict_in_tuple(tpl):
    for i in tpl:
        if isinstance(i, dict):
            return True
    return False
t = (1, 2, {1: 4}, 5)
print  dict_in_tuple(t)
py.user.next
>>> {} in (1, 2, 3)
False
>>> {} in (1, 2, 3, {})
True
>>>
JOHN_16
FishHook
Дюже интересно посмотреть на пробы
+1? покажите как вы пытались решить эту задачу
MiK
JOHN_16
Да вот примерно как py.user.next
только ещё через type(dict)
только это не работает

Можно, конечно решить через for или даже, возможно, с использованием генератора, но я думал, что есть способ проще.
MiK
Если способа проще нет, то этот пожалуй будет более-менее оптимальным:
tup = ('g', '', 4, {3:3})
type(dict()) in [type(d) for d in tup]
Хотя мне всё равно не нравится этот огород.
MiK
Или как можно взять способ как FishHook предложил:
if True in [isinstance(d, dict) for d in tup]:
FishHook
MiK
то этот пожалуй будет более-менее оптимальным:
Если у нас кортеж на миллион итемов и первый же член - словарь. Оптимально перебирать весь миллион?
Ну нафиг такую оптимальность.
Не говоря о том, что ты сначала делаешь список длинной в миллион, а потом по нему миллион проверок.
Может лучше не стоит ничего советовать не подумав?
FishHook
MiK
FishHook предложил:
я такого не предлагал!!!!!!!!!
MiK
Ну ладно… Это уже не суть.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB