Найти - Пользователи
Полная версия: Как проверить наличие словаря в кортеже?
Начало » Python для новичков » Как проверить наличие словаря в кортеже?
1 2 3 4
MiK
FishHook
Только я не понял: разве твоя функция не тоже самое делает?
FishHook
MiK
Ну ладно… Это уже не суть.
Как не суть? Ты предлагаешь крайне неэффективное решение. Из всех возможных вариантов ты выбрал наиболее неправильный. И называешь его эффективным. Да еще и я как бы его придумал. Я несколько негодую.
FishHook
MiK
Только я не понял: разве твоя функция не тоже самое делает?
Совершенно не то же самое.
Во-первых, моя функция не создает списка длинной в исходный кортеж.
Во вторых в моей функции цикл прерывается после получения результата.
MiK
Ты только ругаешься, но никакой конструктивной критики не генерируешь.
if True in (isinstance(d, dict) for d in tup)
Так будет оптимально?

ПС: конструктивная критика появилась, беру свои слова обратно
FishHook
MiK
Так будет оптимально?
Да блин же!


#!/usr/bin/env python
# -* coding: utf-8 -*-
tup = ({}, 1, 2, 3, 4)
c = 0
def f(d):
    global c
    c += 1
    print isinstance(d, dict)
    print c
print True in (f(d) for d in tup)

Сколько раз выполнилась функция проверки?
MiK
FishHook
Может ты не заметил, но я заменил квадратные скобки на круглые.
Результат будет такой-же.
Да, согласен, это не так явно, как твоя функция - она более наглядна.
FishHook
MiK
Может ты не заметил, но я заменил квадратные скобки на круглые.
Да хоть на треугольные, ты вопроса не понял или я мелким шрифтом пишу?
Давай еще раз


Сколько раз выполнилась функция проверки?
MiK
def f(tup):
	c = 0
	a = (isinstance(d, dict) for d in tup)
	c += 1
	if next(a):
		print(c)
		return True

Ну сравни, если не веришь.
py.user.next
MiK
Если способа проще нет, то этот пожалуй будет более-менее оптимальным:

>>> dict in map(type, ('g', '', 4, {3: 3}))
True
>>> dict in map(type, ('g', '', 4))
False
>>>
MiK
py.user.next
Пожалуй этот способ самый нормальный - без огорода. Спасибо.
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