我有一个现有的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。
所以我似乎试图将列表作为元组进行转换是行不通的。我选择元组是因为根据我从其他帖子中读到的内容是更好的方法。
有人可以根据需要调整此方法吗?我也对其他解决方案持开放态度。
更新
我将责备不把我的整个功能放在帖子中。我认为更简洁会让事情变得更容易理解,但最终忽略了一些重要的细节。对不起。我正在使用numpy
和sklearn
这是我的全部功能:
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)
行上我收到一个错误:样本数量与标签数量不匹配。我觉得很奇怪,因为我根本没有改变样本量。我唯一的猜测是它与enumerate
或zip
有关 - 因为这是与文档示例中原始函数的唯一区别
答案 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'])}