Разбор и сравнение списка и словаря и выходных значений

В Internet explorer, если новый url из того же домена, что и текущий url, окно будет открыто без адресной строки. В противном случае это приведет к появлению адресной строки. Одним из способов является открытие страницы из того же домена, а затем перенаправление с этой страницы.

0
задан lostprophet 17 January 2019 в 11:38
поделиться

2 ответа

Мое решение состоит в том, чтобы создать отображение UserName в dict в списке user_id:

users = [[u'ken'], [u'ted']]

user_id = [
    {u'UserName': u'ted', u'LastSeen': u'x'},
    {u'UserName': u'ken', u'LastSeen': u'x'}
]

seen_map = {u['UserName']: u for u in user_id}

user_details = []
for u in users:
    try:
        user_details.append(seen_map[u[0]])
    except KeyError:
        user_details.append('{0} not found in list'.format(u[0]))

print user_details

# for users = [[u'ken'], [u'ted']]
# [{u'UserName': u'ken', u'LastSeen': u'x'}, {u'UserName': u'ted', u'LastSeen': u'x'}]
# for users = [[u'barby'], [u'ted']]
# ['barby not found in list', {u'UserName': u'ted', u'LastSeen': u'x'}]

Таким образом, вам нужно только один раз просмотреть список user_id создать отображение, не один раз для каждого элемента в users.

0
ответ дан SuperShoot 17 January 2019 в 11:38
поделиться

Таким образом, есть пара вещей не так. Сначала вы проверяете для каждой позиции user_id, равен ли каждый пользователь ей, поэтому вы будете переходить к остальным несколько раз для каждого случая в зависимости от количества ваших пользователей.
Другая проблема заключается в том, что вы должны добавить в else вместо замены строки, иначе вы потеряете то, что было сохранено в этой переменной.
Вот пример рабочего кода:
Оператор for, else делает else каждый раз, когда он не разрывается внутри, другими словами, когда вы не находите пользователя в списке, к которому вы добавляете эту строку. [ 114]

users = [[u'ken'], [u'ted']]

user_id = [
{u'UserName': u'ted', u'LastSeen': u'x'},
{u'UserName': u'ken', u'LastSeen': u'x'}
]

user_list = []
for user in users:
    user_list.append(user[0])
a = user_list
user_details = []
for element2 in a:
    for element in user_id:
        if element['UserName'] == element2:
            user_details.append(element)
            break
    else:
        user_details.append([element2 + ' ' + 'not found in list'])

print(user_details)
0
ответ дан Miguel 17 January 2019 в 11:38
поделиться
Другие вопросы по тегам:

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