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>
感谢您的帮助:)
您可以使用
例子:
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 |