用元组中的键和元组中的值创建字典



我正在尝试创建一个字典,其中包含来自x的键和来自元组'用户'列表的值。我需要两种格式的输出:列表字典&字典列表

#input
users = [(2, "jhon", "jhon@company.com"),
(3, "mike", "mike@company.com"),
(4, "sam", "sam@company.com")]
x = ("id", "name", "email")
#expected output:
dict_of_lists = {'id': [2, 3, 4], 'name': ['jhon', 'mike', 'sam'], 'email': ['jhon@company.com', 'mike@company.com', 'sam@company.com']}
list_of_dicts = [{'id': 2, 'name': 'jhon', 'email': 'jhon@company.com'}, {'id': 3, 'name': 'mike', 'email': 'mike@company.com'}, {'id': 4, 'name': 'sam', 'email': 'same@company.com'}]

生成列表字典的代码:

Dict = {}
def Add(key, value):
Dict[key] = value

ListId=[]
ListName=[]
ListEmail=[]
for i in range(len(users)):
ListId.append(users[i][0])
ListName.append(users[i][1])
ListEmail.append(users[i][2])

Add(x[0],ListId)
Add(x[1],ListName)
Add(x[2],ListEmail)
print(Dict)

生成字典列表的代码:

res = []
for i in range(len(users)):
Dict = {x[0] : users[i][0] , x[1] : users[i][1] , x[2]: users[i][2]}
res.append(Dict)
print(res)

我正在寻找任何其他有效的解决这个问题的方法。此外,我已经从元组x &访问元组值的元组'users'列表。我如何使代码动态,当一个新的关键是添加到x &对用户有价值,它被添加到我的输出中?我已经检查了网络找到一个答案,但找不到任何类似于我的问题。这是我的第一个StackOverflow问题。如果你对我的问题有任何建议,请告诉我,或者以更好的方式提问。

第一个:

dict_of_lists = dict(zip(x, map(list, zip(*users))))
# or if tuples are fine
# dict_of_lists = dict(zip(x, zip(*users)))

输出:

{'id': [2, 3, 4],
'name': ['jhon', 'mike', 'sam'],
'email': ['jhon@company.com', 'mike@company.com', 'sam@company.com']}

第二行:

list_of_dicts = [dict(zip(x,l)) for l in users]

输出:

[{'id': 2, 'name': 'jhon', 'email': 'jhon@company.com'},
{'id': 3, 'name': 'mike', 'email': 'mike@company.com'},
{'id': 4, 'name': 'sam', 'email': 'sam@company.com'}]

使用列表推导式和字典推导式:

list_of_dicts = [dict(zip(x,u)) for u in users]
dict_of_lists = {k: [u[i] for u in users] for i, k in enumerate(x)}

相关内容

  • 没有找到相关文章

最新更新