python - 将二维列表和一维列表映射到字典

标签 python python-2.7

我有一个 list -

index = ['a','b','c','d']

还有一个二维列表- val = [[1,11,21,31],[3,13,23,33],[7,17,27,37]]

我如何将这些数组映射到字典中,以便值如下 -

d = {'a': [1,3,7] ,'b': [11,13,17] ,'c': [21,23,27] ,'d': [ 31,33,37] }.

最有效的方法是什么?

我想通过遍历 2d 列表来做这件事不是很有效吗? 有什么方法可以通过使用 dict(zip() 函数来实现,即我们在映射两个一维列表时采用的方式吗?

我尝试使用 dict(zip(index,val))。但它给了我

d = {'a':[1,11,21,31],'b':[3,13,23,33],'c':[7,17,27,37]

谢谢。

最佳答案

val 的形状为 (3,4),但是为了使用 zip 形成一个 dict,第一个维度必须与索引的数量相匹配:在本例中为 4。您可以通过转置 val 来实现这一点。

转置列表列表:

>>> zip(*val)
[(1, 3, 7), (11, 13, 17), (21, 23, 27), (31, 33, 37)]

然后您可以将结果与索引一起压缩以形成 dict:

>>> dict(zip(index, zip(*val)))
{'d': (31, 33, 37), 'a': (1, 3, 7), 'b': (11, 13, 17), 'c': (21, 23, 27)}

关于python - 将二维列表和一维列表映射到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29208015/

相关文章:

Python Float 舍入错误

multithreading - 使用 Python 2.7 的 GAE 上的线程抛出 "FrontendsNotSupported"错误

python - 与日期分开导入时间数据并且不添加日期

python - 为什么空字典的大小与 Python 中非空字典的大小相同?

javascript - Selenium 单击不会触发网站上的事件(python)

python - 如何在 Django 表单中*仅*隐藏输入类型文件的按钮(不是整个元素)?

python - 网页抓取器返回元素列表

c - 在 GCC 4.8 上构建 Python (2.7) 模块失败

Python - 从数据框中提取信息 (JSON)

python - 扭曲:失败与错误