Python:从两个列表构建字典

Python:从两个列表构建字典,python,arrays,python-2.7,dictionary,Python,Arrays,Python 2.7,Dictionary,由于第一个问题没有明确地提出,我将尝试更具体一些 我有两个2d矩阵,一个有5列(我们称之为数据),另一个有7列(我们称之为BMU)。让我们将5列子矩阵光度法和最后两列分别称为z和z_err我想做的是,排除BMU的最后两列,计算数据对象和BMU对象之间的所有欧几里德距离,然后为每个数据对象找到最近的k BMU对象。(这里我重新排列了距离矩阵,因此无法将距离与特定BMU对象关联) 这样,我想检索BMU矩阵中最近的k个对象,并使用第6列和第7列执行一些操作 为了存储和检索我需要的所有这些信息,我试图创

由于第一个问题没有明确地提出,我将尝试更具体一些
我有两个2d矩阵,一个有5列(我们称之为数据),另一个有7列(我们称之为BMU)。让我们将5列子矩阵光度法和最后两列分别称为z和z_err
我想做的是,排除BMU的最后两列,计算数据对象和BMU对象之间的所有欧几里德距离,然后为每个数据对象找到最近的k BMU对象。(这里我重新排列了距离矩阵,因此无法将距离与特定BMU对象关联)
这样,我想检索BMU矩阵中最近的k个对象,并使用第6列和第7列执行一些操作
为了存储和检索我需要的所有这些信息,我试图创建某种字典。因此,当我计算距离时,我可以使用ID将特定距离与BMu对象的特征(光度,z和z_err)关联,即使我必须重新排列它们


感谢您的帮助:)

您可以使用
zip
dict

例如:

dictionary = dict(zip(keys, values))

Sembei Norimaki给出了完美的答案,它比我的循环更简洁。 我已经编辑了我的答案,以提供一些附加值

我会使用函数和生成器

{key: value for (key, value) in zip(keys, values)}
这样做的好处是可以添加其他条件。也许你想跳过一些键

{key: value for (key, value) in zip(keys, values) if ...}
在循环中,这看起来像:

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

啊,你的更好。更简洁notation@downvoter你能至少留下一个评论吗?dict(范围(len(BMU)),BMU[:,:-2])这将创建一个字典,但我无法将测光与最后两列分开,并将它们作为值单独添加