Python 仅获取每个字典中的值

Python get only values in each dictionary

我打算获取数组列表中每个字典的值并将这些值放入新字典中。

每个字典中有两个键,两个值。

这是我的array_list。

[{'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

我仍然无法获得预期的结果。有帮助吗?

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'}

你几乎是正确的。只是在 if else 中有一些问题。

编写代码后,您应该尝试自己模拟您的代码。请仔细查看您内部的 for 循环。对于每次迭代,Name 或 Value 都将被设置为 if 和 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']

和你的代码差不多,但是我的思路不一样。