Уведомления

Группа в Telegram: @pythonsu

#1 Июль 4, 2015 12:59:00

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

Пробую по всякому, но не получается?
Как сделать правильно?

Офлайн

#2 Июль 4, 2015 13:03:05

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

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)



Офлайн

#3 Июль 4, 2015 13:06:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

>>> {} in (1, 2, 3)
False
>>> {} in (1, 2, 3, {})
True
>>>



Офлайн

#4 Июль 4, 2015 13:48:30

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

FishHook
Дюже интересно посмотреть на пробы
+1? покажите как вы пытались решить эту задачу



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Июль 4, 2015 13:58:54

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

JOHN_16
Да вот примерно как py.user.next
только ещё через type(dict)
только это не работает

Можно, конечно решить через for или даже, возможно, с использованием генератора, но я думал, что есть способ проще.

Офлайн

#6 Июль 4, 2015 14:07:41

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

Если способа проще нет, то этот пожалуй будет более-менее оптимальным:

tup = ('g', '', 4, {3:3})
type(dict()) in [type(d) for d in tup]
Хотя мне всё равно не нравится этот огород.

Офлайн

#7 Июль 4, 2015 14:20:29

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

Или как можно взять способ как FishHook предложил:

if True in [isinstance(d, dict) for d in tup]:

Офлайн

#8 Июль 4, 2015 14:21:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

MiK
то этот пожалуй будет более-менее оптимальным:
Если у нас кортеж на миллион итемов и первый же член - словарь. Оптимально перебирать весь миллион?
Ну нафиг такую оптимальность.
Не говоря о том, что ты сначала делаешь список длинной в миллион, а потом по нему миллион проверок.
Может лучше не стоит ничего советовать не подумав?



Офлайн

#9 Июль 4, 2015 14:21:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

MiK
FishHook предложил:
я такого не предлагал!!!!!!!!!



Офлайн

#10 Июль 4, 2015 14:23:06

MiK
Зарегистрирован: 2014-10-30
Сообщения: 191
Репутация: +  -1  -
Профиль   Отправить e-mail  

Как проверить наличие словаря в кортеже?

Ну ладно… Это уже не суть.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version