微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用列表理解从字典中创建字典列表

如何解决使用列表理解从字典中创建字典列表

我有一个格式的字典:

d = {'award1' : { 'nominees': ['name1','name2'],'presenters': ['name3','name4'],'winner' : 'name1'
                }
     'award2' : { 'nominees': ['name5','name6'],'presenters': ['name7','name8'],'winner' : 'name6'
                }
    }

我正在尝试创建一个分隔值的字典列表,即结果应该是:

my_list = [ { 'award1': ['name1','award2': ['name5','name6'] },{ 'award1': ['name3','award2': ['name7','name8'] },{ 'award1': 'name1','award2': 'name6' }
          ]

有没有办法通过单行列表理解来做到这一点?

到目前为止我尝试过的:

lst = [{key:val['nominees'],key:val['presenters'],key:val['winner']} for key,val in d.items()]

我的代码使用普通的“for”循环:

nominees,winner,presenters = {},{},{}
    for key,val in d.items():
        nominees[key] = val['nominees']
        winner[key] = val['winner']
        presenters[key] = val['presenters']
lst = [nominees,presenters]

解决方法

这是一个列表推导 + 字典推导版本的单行代码来实现这一点:

d = {
    'award1' : { 
        'nominees': ['name1','name2'],'presenters': ['name3','name4'],'winner' : 'name1'
     },'award2' : {
         'nominees': ['name5','name6'],'presenters': ['name7','name8'],'winner' : 'name6'
      }
}

# List of keys to maintain the order of elements in the desired list
nested_keys = ['nominees','presenters','winner']

# In Python 3.7+: If the insertion order of key in initial dict is same as
#                 order of desired list,we can use this to make it more generic
# nested_keys = list(d.values())[0].keys()

new_list = [{k: d[k][key] for k in d.keys()} for key in nested_keys]

new_list 的位置:

[
    {'award1': ['name1','award2': ['name5','name6']},{'award1': ['name3','award2': ['name7','name8']},{'award1': 'name1','award2': 'name6'}
]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?