如何将用户输入生成的列表转换为指定结构的嵌套字典?
如何将分散的用户列表转换为指定嵌套字典?
首先咱们先明确需求:你手上有这些分开的列表数据:
user1_name = ['Adam'] user1_passion = ['Coding','Wood Chopping','Sleeping'] user2_name = ['Eve'] user2_passion = ['Coding','Eating Apples','Sleeping']
想要把它们转换成这样的嵌套字典:
user_info = { 'user1': { 'fname': 'adam', 'passion': ['coding', 'wood chopping', 'sleeping'] }, 'user2': { 'fname': 'eve', 'passion': ['coding', 'eating apples', 'sleeping'] }, }
其实方法很直接,咱们可以手动构建这个字典,同时处理字符串的大小写转换:
基础实现代码
# 处理user1的数据:取出唯一的名字转小写,遍历爱好列表把每个元素转小写 user1_data = { 'fname': user1_name[0].lower(), 'passion': [p.lower() for p in user1_passion] } # 同样处理user2的数据 user2_data = { 'fname': user2_name[0].lower(), 'passion': [p.lower() for p in user2_passion] } # 组合成最终的嵌套字典 user_info = { 'user1': user1_data, 'user2': user2_data } print(user_info)
代码小解释
- 因为
user1_name和user2_name都是只有一个元素的列表,所以直接用[0]取出名字,再用lower()转成小写。 - 爱好列表用列表推导式批量处理:
[p.lower() for p in user1_passion]会遍历每个爱好,把字符串统一转成小写,生成新的列表。
如果以后要加更多用户(比如user3、user4),重复写代码太麻烦,咱们可以用循环批量处理:
# 把所有用户的信息整理成一个统一列表,每个元素是(用户标识, 名字列表, 爱好列表) users = [ ('user1', user1_name, user1_passion), ('user2', user2_name, user2_passion) ] user_info = {} # 循环遍历每个用户的数据,自动生成字典内容 for user_key, name_list, passion_list in users: user_info[user_key] = { 'fname': name_list[0].lower(), 'passion': [p.lower() for p in passion_list] }
这样以后新增用户,只需要往users列表里加一行数据就行,不用重复写逻辑,更灵活~
内容的提问来源于stack exchange,提问作者Display_name
相关产品推荐
相关产品推荐

