从字典中的字典中获取值(一组)

时间:2019-02-27 10:28:45

标签: python python-2.7 dictionary set typeerror

我已经看过这些了,但是到目前为止还没有运气 stackquestion1 stackquestion2 stackquestion3以及许多其他。似乎总是不同吗?

我真的认为这是一个简单的解决方案,但是我已经尝试了几个小时。我想在for循环中获取嵌套字典的值。我这里有一个简化的示例:

def write_to_file(class_set, clusterdict, outfile):
with open(outfile, "w") as outputfile:
    writer = csv.writer(outputfile, delimiter='\t')
    class_list = list(class_set)
    header = ["\t"] + class_list
    writer.writerow(header)  # write header
    for organism, cluster in clusterdict.items():
        #print clusterdict.get(organism) # works, just to see if it does anything
        line = []
        #some stuff here that works, writing specific lines
        #part that doesnt work
        line.append(clusterdict.get(organism).get(cluster)) # gives TypeError: unhashable type: 'dict'
        line.append(clusterdict.get(organism) # does work, but of course gives me the wrong dict values
        writer.writerow(line)

字典看起来像这样。它是具有多个生物体的字典,并且具有多个簇的字典。因此,每个生物都有多个簇,以(有时是多个)集合作为值(我认为问题可能出在集合上?)

clusterdict = 
'organism1':{'cluster1': [set(['value1', 'value2']) , [set(['value3', 'value4'])], 'cluster2: [set(['value5', 'value6']) , [set(['value7', 'value8'])]} , 
'organism2':{.......} , 
'organism3':{.......} , etc

我尝试了很多方法来获取值。例如dict [key1] [key2],但这也给了我“无法散列”的错误。有人可以给我一些指示吗?

1 个答案:

答案 0 :(得分:1)

您正在尝试使用cluster作为键,但实际上cluster是您的值,并且它也是字典。

您可以像使用主词典那样遍历cluster

for organism, cluster in clusterdict.items():
    for key, value in cluster.items():
        ...

它们的错误TypeError: unhashable type: 'dict'是因为密钥必须是可哈希的,而cluster是字典-不可哈希。

但是再说一次,您不想使用cluster作为键,因为cluster是您的值,只是您的值也是包含键和值的字典。