2014-09-12 5 views
0

Я хочу создать массив множества в Python.Добавить словарь как значение словаря в Python

Это то, что я пытаюсь сделать с моим кодом ниже

for doc in collection.find(): 
     pageType = doc.get('pageType') 
     title = doc.get('title') 
     _id = doc.get('_id') 
     value = {'pageType' : pageType, 'id': _id} 
     setValues = pageDict.get(title) 
     if not setValues : 
      setValues = set() 
      pageDict[title] = setValues 
     setValues.add(value) 

Я получаю следующее сообщение об ошибке при запуске его
setValues.add (значение) TypeError: unhashable Тип: 'ДИКТ'

Я обнаружил, что я не могу установить изменяемое значение в качестве ключа словаря, но я добавляю его как значение словаря. По сути, мое значение словаря - это набор, содержащий другой словарь. Как я могу достичь этого в python? Какие другие структуры данных я мог бы использовать для достижения этого?

+2

вы не можете добавить Dict к набору, который является то, что 'setValues.add (значение)' делает, вы можете добавить dicts к списку, также почему вы меняете setValues ​​с 'pageDict.get (title)' на 'setValues ​​= set()'? –

+0

Есть ли причина, по которой вам нужен набор вместо другой структуры? Наборы обычно используются, когда присутствует элемент или нет, но не сам элемент. – user2085282

+0

Я использую set, чтобы избежать дубликатов. – konquestor

ответ

0

я использовал frozsenSet добавить значение в набор, и она работала

setValues.add(frozenSet(value.items()) 
Смежные вопросы