Python получает только значения в каждом словаре - PullRequest
0 голосов
/ 13 декабря 2018

Я намерен получить значения для каждого словаря в списке массивов и поместить значения в новый словарь.

В каждом словаре два ключевых, два значения.

Это мой список массивов.

[{'Name': 'email', 
'Value': 'mail@outlook.com'}, 
{'Name': 'name', 
'Value': 'tester'}, 
{'Name': 'address', 
'Value': 'abc'}]

Мой ожидаемый результат (чтобы получить оба значения в каждом словаре):

{'email': 'mail@outlook.com',
 'name': 'tester', 
'address': 'abc'}

Мой текущий код:

outcome = {}
x = ""

for i in range(len(array_list)):
    for key,value in array_list[i].items():
        if key == 'Value':
            x = value
        elif key == 'Name': 
            outcome[value] = x

Я все еще не смог получить ожидаемый результат.Любая помощь?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вы почти правы.Просто есть некоторые проблемы, если еще.

После написания кода вы должны попытаться смоделировать ваш код самостоятельно.Пожалуйста, внимательно посмотрите на себя внутри петли.Для каждой итерации имя или значение будут установлены так, как если бы и elif было взаимоисключающим.Но требование заключается в создании значения ключа в каждой итерации.

outcome = {}
array_list = [{'Name': 'email',
               'Value': 'mail@outlook.com'},
              {'Name': 'name',
               'Value': 'tester'},
              {'Name': 'address',
               'Value': 'abc'}]
for i in range(len(array_list)):
    keys = array_list[i].keys()
    if 'Name' in keys and 'Value' in keys:
        outcome[array_list[i]['Name']] = array_list[i]['Value']

Это почти то же самое, что и ваш код, но мое мышление отличается.

0 голосов
/ 13 декабря 2018
l = [{'Name': 'email', 
'Value': 'mail@outlook.com'}, 
{'Name': 'name', 
'Value': 'tester'}, 
{'Name': 'address', 
'Value': 'abc'}]

{k['Name'] : k['Value'] for k in l}

результат

{'address': 'abc', 'email': 'mail@outlook.com', 'name': 'tester'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...