【问题标题】:Convert list(s) to dictionary [closed]将列表转换为字典 [关闭]
【发布时间】:2021-09-18 22:54:40
【问题描述】:

#从用户输入生成的列表。

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

}

【问题讨论】:

  • 嗨!请编辑您的问题并添加一个minimal reproducible example您尝试过但不起作用的内容。这是对 dict 的非常直接的使用:docs.python.org/3/tutorial/datastructures.html
  • 为什么"Wood Chopping" 变成"hunting"
  • 请注意,更好的计划是从一开始就以您想要的格式创建字典。不要先积累数据。
  • @msanford - 嗨。我确实参考了文档,并且对于我在 Python 中的专业知识水平,我自己无法弄清楚如何将我拥有的值转换为字典。
  • @Display_name 你能分享收集用户输入的代码吗?您的问题的答案将涉及撤消该代码所做的任何事情;查看原始代码并“修复”它以将所有内容放在正确的位置会更容易。

标签: python list dictionary


【解决方案1】:

可以通过执行以下操作将这些列表整理成一个字典:

>>> user_info = {
...     f"user{i}": {
...         'fname': name[0].lower(),
...         'passion': [p.lower() for p in passion]
...     }  for i, (name, passion) in enumerate(
...        [(user1_name, user1_passion), (user2_name, user2_passion)],
...        1
...     )
... }
>>>
>>> user_info
{'user1': {'fname': 'adam', 'passion': ['coding', 'wood chopping', 'sleeping']}, 'user2': {'fname': 'eve', 'passion': ['coding', 'eating apples', 'sleeping']}}

如果这些输入片段一开始不在不同的静态命名变量中,那就简单多了;简单的解决方案是在收集输入时将它们插入字典(或列表)中。

例如:

>>> num_users = 2
>>> user_info = {
...     f"user{i}": {
...         'fname': input("User name: ").lower(),
...         'passion': input("What are your passions?  (Comma-separated list.) ").lower().split(",")
...     } for i in range(1, num_users+1)
... }
User name: Adam
What are your passions?  (Comma-separated list.) Coding,Wood Chopping,Sleeping
User name: Eve
What are your passions?  (Comma-separated list.) Coding,Eating Apples,Sleeping
>>> user_info
{'user1': {'fname': 'adam', 'passion': ['coding', 'wood chopping', 'sleeping']}, 'user2': {'fname': 'eve', 'passion': ['coding', 'eating apples', 'sleeping']}}

【讨论】:

  • 谢谢@Samwise,我会在我的 IDE 中尝试这个解决方案。
猜你喜欢
  • 2017-09-12
  • 2021-02-04
  • 1970-01-01
  • 2022-01-03
  • 2014-01-30
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2017-04-23
相关资源
最近更新 更多