Python:带有重复键的字典

时间:2017-03-31 04:58:45

标签: python dictionary

我有以下词典对象:

Input = {'userName': ['psrr_api@auto-grid.com', 'ps_api1@auto-grid.com'],
         'password': ['Everseeource2016!', 'Eversource2016!']}

然后将产生此特定输出:

output = [{'UserName':'ps_api@auto-grid.com','password': 'Eversource2016!'},
          {'userName':'ps_api1@auto-grid.com','password':'Eversource2016!'}]

我不确定如何处理这个问题,我们将不胜感激。

3 个答案:

答案 0 :(得分:3)

使用zip同时迭代两个列表。使用dict constructorlist comprehension内创建单独的词典,以处理自动循环。

Input = {'userName': ['psrr_api@auto-grid.com', 'ps_api1@auto-grid.com'], 'password': ['Everseeource2016!', 'Eversource2016!']}

Output = [ {'UserName':u, 'password':p} for u,p in zip(Input['userName'], Input['password']) ]

答案 1 :(得分:1)

在许多NoSQL引擎中,数据通常以嵌套方式存储,对于您的情况,它将是:

{'ID_1':
    {
    'username':'psrr_api@auto-grid.com',
    'password': 'Everseeource2016'
    },
'ID_2':{
    'username':'ps_api1@auto-grid.com',
    'password': 'Eversource2016!'
    }
}

这提供了一种通过ID

访问数据的有效方法

More Examples

以下是转换格式的代码: 此代码是通用的 - 意味着您不必指定密钥,在这种情况下:usernamepassword

from collections import defaultdict
data = defaultdict(dict)
for idx in range(len(Input.values()[0])):
    for key in Input.keys():
        data['ID_'+str(idx)].update({key: Input[key][idx]})
print data

答案 2 :(得分:1)

如果你偶然需要一个可变数量的键,你可以推广到:

<强>代码:

data = {'userName': ['psrr_api@auto-grid.com', 'ps_api1@auto-grid.com'],
         'password': ['Everseeource2016!', 'Eversource2016!']}

for i in output:
    print(i)

测试代码:

{'userName': 'psrr_api@auto-grid.com', 'password': 'Everseeource2016!'}
{'userName': 'ps_api1@auto-grid.com', 'password': 'Eversource2016!'}

<强>输出:

refreshControl