强制将Dict作为元组读取列表

时间:2017-05-17 07:57:02

标签: python python-3.x dictionary

我有一个现有的dict,它有键但没有值。我想通过迭代两个列表来填充值,如下所示:

for (pair,name) in enumerate(zip([[0,1],[0,2],[0,3],[1,2],[1,3],[2,3]], ['pair1','pair2','pair3','pair4','pair5','pair6'])):
    my_dict[tuple(name)] = pair

但是我收到错误:unhashable type:list。

所以我似乎试图将列表作为元组进行转换是行不通的。我选择元组是因为根据我从其他帖子中读到的内容是更好的方法。

有人可以根据需要调整此方法吗?我也对其他解决方案持开放态度。

更新

我将责备不把我的整个功能放在帖子中。我认为更简洁会让事情变得更容易理解,但最终忽略了一些重要的细节。对不起。我正在使用numpysklearn这是我的全部功能:

pair_names = ['pair1','pair2','pair3','pair4','pair5','pair6']
pair_dict = {p:[] for p in pair_names}
for (pair,key) in zip([[0,1],[0,2],[0,3],[1,2],[1,3],[2,3]], ['pair1','pair2','pair3','pair4','pair5','pair6']):
    x = iris.data[:,pair]
    y = iris.target
    clf = DecisionTreeClassifier().fit(x,y)
    decision_boundaries = decision_areas(clf,[0,7,0,3])
    pair_dict[key] = decision_boundaries

到目前为止,根据此问题的答案继续提出建议,我删除了enumerate并简单地使用了zip。不幸的是,现在在clf = DecisionTreeClassifier().fit(x,y)行上我收到一个错误:样本数量与标签数量不匹配。我觉得很奇怪,因为我根本没有改变样本量。我唯一的猜测是它与enumeratezip有关 - 因为这是与文档示例中原始函数的唯一区别

1 个答案:

答案 0 :(得分:2)

也许你想要的是:

{ tuple(x):y for (x,y) in zip([[0,1],[0,2],[0,3],[1,2],[1,3],[2,3]], ['pair1','pair2','pair3','pair4','pair5','pair6'])}