【问题标题】:Is it possible to remove the top level key from a nested dictionary and keep the values?是否可以从嵌套字典中删除顶级键并保留值?
【发布时间】:2018-08-26 22:53:40
【问题描述】:

带有要删除的键的嵌套字典示例。

{1: {'Email': 'JohnDoe@email.com',
     'FirstName': 'John',
     'Id': {'Value': 1},
     'LastName': 'Doe',
     'UserName': 'JohnDoe'},
 2: {'Email': 'JaneDoe@email.com',
     'FirstName': 'Jane',
     'Id': {'Value': 2},
     'LastName': 'Doe',
     'UserName': 'JaneDoe'},
 3: {'Email': 'FredDoe@email.com',
     'FirstName': 'Fred',
     'Id': {'Value': 1},
     'LastName': 'Doe',
     'UserName': 'FredDoe'}}

是否可以像下面这样删除数字键并保存字典?

   {{'Email': 'JohnDoe@email.com',
     'FirstName': 'John',
     'Id': {'Value': 1},
     'LastName': 'Doe',
     'UserName': 'JohnDoe'},
    {'Email': 'JaneDoe@email.com',
     'FirstName': 'Jane',
     'Id': {'Value': 2},
     'LastName': 'Doe',
     'UserName': 'JaneDoe'},
    {'Email': 'FredDoe@email.com',
     'FirstName': 'Fred',
     'Id': {'Value': 1},
     'LastName': 'Doe',
     'UserName': 'FredDoe'}}

【问题讨论】:

  • 在您的预期输出中,外部容器不应该是一个列表吗?由于字典不可散列,因此不可能拥有像 {{1: 'a'}, {2: 'b'}, {3: 'b'}} 这样的东西。
  • 谢谢肖恩。所以听起来我需要将字典转换为列表才能获得所需的输出?我正在尝试构建具有预期输出的 JSON 文件,并且原始字典是从 REST API 获得的,因此正在寻找一种删除数字键的方法。

标签: python-3.x dictionary nested


【解决方案1】:

假设字典在变量d 中,您所要做的就是d.values(),它将为您提供字典中每个key, value 对的值:

>>> d = {1: {'Email': 'JohnDoe@email.com', 'FirstName': 'John', 'Id': {'Value': 1}, 'LastName': 'Doe', 'UserName': 'JohnDoe'}, 2: {'Email': 'JaneDoe@email.com', 'FirstName': 'Jane', 'Id': {'Value': 2}, 'LastName': 'Doe', 'UserName': 'JaneDoe'}, 3: {'Email': 'FredDoe@email.com', 'FirstName': 'Fred', 'Id': {'Value': 1}, 'LastName': 'Doe', 'UserName': 'FredDoe'}}
>>> l = list(d.values())
>>> l
[{'Email': 'JohnDoe@email.com', 'FirstName': 'John', 'Id': {'Value': 1}, 'LastName': 'Doe', 'UserName': 'JohnDoe'}, {'Email': 'JaneDoe@email.com', 'FirstName': 'Jane', 'Id': {'Value': 2}, 'LastName': 'Doe', 'UserName': 'JaneDoe'}, {'Email': 'FredDoe@email.com', 'FirstName': 'Fred', 'Id': {'Value': 1}, 'LastName': 'Doe', 'UserName': 'FredDoe'}]

【讨论】:

  • 正是我需要的。谢谢!
【解决方案2】:

我想你想创建一个只包含键而不是键和值的字典

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-08
    • 2019-11-18
    • 1970-01-01
    • 2014-01-19
    • 2021-08-09
    • 2014-03-29
    • 1970-01-01
    相关资源
    最近更新 更多