python:从两个list建立一个dictionary

Python: build a dictionary from two lists

本问题已经有最佳答案,请猛点这里访问。

由于第一个问题没有清晰地发布,我将尝试更具体一些。< BR>我有两个二维矩阵,一个有5列(我们称之为数据),另一个有7列(我们称之为BMU)。让我们分别称之为5列子矩阵光度法和最后两列Z和Z_Err。
我要做的是,排除BMU的最后两列,计算数据对象和BMU对象之间的所有欧几里得距离,然后为每个数据对象找到最近的K BMU对象。(此处我重新排列距离矩阵,因此无法将距离关联到特定的BMU对象)
完成后,我想检索BMU矩阵中最近的K对象,并使用第6列和第7列执行一些操作。< BR>为了存储和检索我需要的所有这些信息,我试图创建某种类型的字典。所以,当我计算距离时,我可以使用一个ID将特定的距离与BMU对象的特征(光度测定,z和z_err)关联起来,即使我必须重新排列它们。< BR>

感谢您的帮助:)


您可以使用zipdict

例子:

1
dictionary = dict(zip(keys, values))


塞姆贝诺里马基给出了完美的答案,它比我的循环更简洁。我已经编辑了我的答案以提供一些附加值。

我将使用zip函数和一个生成器

1
{key: value for (key, value) in zip(keys, values)}

这样做的好处是可以添加其他条件。也许你想跳过一些键?

1
{key: value for (key, value) in zip(keys, values) if ...}

在一个循环中,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
keys=["a","b","c"]
vals=[1, 2, 3]

new_dict={}

for key, val in zip(keys, vals):

    # check invariants on key and value,
    # skip if the tests fail
    if not do_some_tests(key, val):
        continue
    new_dict[key]=val