【问题标题】:Convert dict to nested list, inserting keys into each sublist将 dict 转换为嵌套列表,将键插入每个子列表
【发布时间】:2018-08-10 03:48:22
【问题描述】:

我有这个问题的解决方案,但我很好奇是否有更好的方法。 我有一个这样的字典:

dict1 = {
'key1':[['value1','value2','value3'],['value4','value5','value6']],
'key2':[['value7','value8','value9'],['value10','value11','value12']],
'key3':[['value13','value14','value15'],['value16','value17','value18']]}

我想将其转换为嵌套列表,并将键插入到新的子列表中,如下所示:

nestedlist = [
['value1','value2','key1','value3'],['value4','value5','key1','value6'],
['value7','value8','key1','value9'],['value10','value11','key2','value12'],
['value13','value14','key2','value15'],['value16','value17','key2','value18'],
['value10','value11','key3','value12'],['value13','value14','key3','value15'],
['value16','value17','key3','value18']]

我通过以下方式解决这个问题:

keys = [*dict1]
newlist = []
for item in keys:
    for item2 in dict1[item]:
        item2.insert(2,item)
        newlist.append(item2)

那么,我该如何改进这段代码呢?

【问题讨论】:

    标签: python dictionary python-3.5


    【解决方案1】:

    这是通过列表理解的一种方法:

    res = [[w[0], w[1], k, w[2]] for k, v in dict1.items() for w in v]
    
    # [['value1', 'value2', 'key1', 'value3'],
    #  ['value4', 'value5', 'key1', 'value6'],
    #  ['value7', 'value8', 'key2', 'value9'],
    #  ['value10', 'value11', 'key2', 'value12'],
    #  ['value13', 'value14', 'key3', 'value15'],
    #  ['value16', 'value17', 'key3', 'value18']]
    

    【讨论】:

    • 这个方法最快,我给你正确答案:)
    • 一开始我在尝试列表理解,但由于某种原因无法得到它,即使我之前已经完成了多嵌套列表组合。感谢您发布此内容
    【解决方案2】:

    我会做的非常相似。此处显示的唯一区别:

    result = []
    for k, l in dict1.items():
       for ll in l:
          ll.insert(2, k)
          result.append(ll)
    

    无需在 dict1 上进行列表解包或 [] 访问。 items() 返回包含字典的每个键和值的元组列表。

    【讨论】:

    • 也许你可以用 list()、map() 和 lambdas 做一些事情,但我没有靠近装有 python 的机器来测试它
    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 2021-04-18
    相关资源
    最近更新 更多