从为键设置对象的Python字典中获取值

从为键设置对象的Python字典中获取值,python,dictionary,set,key,Python,Dictionary,Set,Key,我正在使用一个python包,它输出一个字典,该字典将对象设置为键。我知道通常如何使用.get方法从字典中获取值,但不知道如何引用作为set对象的键。 我将此作为我正在使用的包函数的输出: {set(['a']):0.46835443038; set(['c']):0.303797468354; set(['a', 'b']):0.151898734177; set(['c', 'b']):0.0759493670886} 当我尝试使用dict_name.getset['a']获取值0.468

我正在使用一个python包,它输出一个字典,该字典将对象设置为键。我知道通常如何使用.get方法从字典中获取值,但不知道如何引用作为set对象的键。 我将此作为我正在使用的包函数的输出:

{set(['a']):0.46835443038; set(['c']):0.303797468354; set(['a', 'b']):0.151898734177; set(['c', 'b']):0.0759493670886}
当我尝试使用dict_name.getset['a']获取值0.46835443038时,它不起作用。我也试过dict_name.geta,但运气不好。任何建议都会有帮助。谢谢

字典已将对象设置为其键

恕我直言,没有。set不是允许用作dict键的类型。dict键必须是可散列的,因此必须是不可变的。集合是可变的,因此不可散列

我不明白如何引用作为集合对象的键

如果可能,以下是一些参考值的方法:

v = dict_name.get(set(['a']))
v = dict_name[set(['a'])]
for k,v in dict_name.items():
    print(k,v)
for k in dict_name.keys():
    print(k, dict_name[k])

正如其他人所说,在Python中,您确实不能使用不可损坏的集作为字典键。但是,如果您从另一个程序以字符串的形式获取输出,则可以使用正则表达式从字符串中提取键和值,不过您肯定应该考虑更好的方法来表示键:

>>> import re
>>> text = "{set(['a']):0.46835443038; set(['c']):0.303797468354; set(['a', 'b']):0.151898734177; set(['c', 'b']):0.0759493670886}"

>>> new_dict = dict((key, float(val)) for key, val in re.findall("(set\(.+?\))\:(.+?)[;}]", text))
>>> print(new_dict)
>>> {"set(['a', 'b'])": 0.151898734177, "set(['a'])": 0.46835443038, "set(['c', 'b'])": 0.0759493670886, "set(['c'])": 0.303797468354}

大家好,欢迎来到StackOverflow。请花些时间阅读帮助页面,特别是命名和的部分。更重要的是,请阅读。您可能还想了解。不能将set对象作为键。这是什么包裹?此外,分号作为字典分隔符,这是无效的语法。你是如何获得一个以集合(一种不可损坏的类型)为键的字典的?