繁体   English   中英

如何从两个列表创建字典,其中一个是嵌套的?

[英]How do I create a dictionary from two lists, one of them being nested?

我有两个数据列表,其中一个包含标签:

labels = ['timestamp', 'hour', 'day']

另一个列表是嵌套值列表,如下所示:

 values = [[1543449657, 13, 'Monday'], [1543449690, 0, 'Thursday'], [1543449841, 15, 'Sunday']]

我想创建一个字典,它从标签列表中获取一个键并循环访问第二个列表中的,因此输出如下所示:

{
    "timestamp": [1543449657, 1543449690, 1543449841],
    "hour": [13, 0, 15],
    "day": ['Monday', 'Thursday', 'Sunday']
}

我在下面发布我的代码。

dic = {} 
for key in labels: 
    for sublist in values:
        for value in sublist:
            dic[key] = value
            sublist.remove(value)
            break
print(dic)

它只从第一行插入值。

{'timestamp': 1543449657, 'hour': 13, 'day': 'Monday'}

我究竟做错了什么?

你可以在这里使用字典理解

>>> {key: [sub[index] for sub in values] for index, key in enumerate(labels)}
{'timestamp': [1543449657, 1543449690, 1543449841],
 'hour': [13, 0, 15],
 'day': ['Monday', 'Thursday', 'Sunday']}

您可以将values的子列表压缩在一起以获取字典的值:

dict(zip(labels, zip(*values)))
# {'timestamp': (1543449657, 1543449690, 1543449841), 'hour': (13, 0, 15), 'day': ('Monday', 'Thursday', 'Sunday')}

如果您需要将它们作为列表,您可以将list映射到它们上

dict(zip(labels, map(list, zip(*values))))
# {'timestamp': [1543449657, 1543449690, 1543449841], 'hour': [13, 0, 15], 'day': ['Monday', 'Thursday', 'Sunday']}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM