[英]How can I create a dictionary from two lists, one list is the keys, the other contains nested values?
[英]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.