Получение только одного ответа из списка Python

Вы хотите интерфейс 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.

0
задан Primusa 16 January 2019 в 17:02
поделиться

1 ответ

Использовать встроенный питон 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")
0
ответ дан Primusa 16 January 2019 в 17:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: