Вы хотите интерфейс net.Error
. http://golang.org/pkg/net/#Error
if e,ok := err.(net.Error); ok && e.Timeout() {
// This was a timeout
} else if err != nil {
// This was an error, but not a timeout
}
Обратите внимание, что утверждение типа err.(net.Error)
корректно обрабатывает случай nil
и возвращает false для значения ok
, если nil
возвращается как ошибка, короткое замыкание проверки Timeout
.
Использовать встроенный питон lst.count()
a = 11
bla = [1,2,3,4,5,6,7,8,9,10]
# get number of times a occurs in bla
cnt = bla.count(a)
# if cnt isn't zero then lista becomes a repeated cnt times, otherwise just not found
lista = [a] * cnt if cnt >= 1 else ["not found"]
print(lista)
>>>["not found"]
Редактировать:
Жан-Франсуа Фабр предложил более питонную версию для строительства lista
:
lista = [a] * cnt or ["not found"]
[1110 ] Редактировать 2:
Если вы хотите сделать что-то похожее для словарей, вам нужно только реализовать функцию подсчета для себя. Я превратил пользователя в строковый литерал, поскольку составление списка и выполнение user[0]
каждый раз бессмысленно:
user = 'john'
user_details = [{u'UserName': u'fred', u'LastSeen': u'a'}, {u'UserName': u'freddy', u'LastSeen': u'b'}]
# get the count
cnt = sum(i['UserName'] == user for i in user_details)
#do what we did before
lista = [user] * cnt or ["not found"]
Редактировать 3:
Наконец, если вы хотите использовать цикл for, проверьте, не найден ли он в конце, а не на каждом шаге:
user = ['john']
user_details = [{u'UserName': u'fred', u'LastSeen': u'a'},{u'UserName': u'freddy', u'LastSeen': u'b'}]
lis = []
for element in user_details:
if element['UserName'] == user[0]:
lis.append(element)
if not lis: lis.append("not found")