Найти - Пользователи
Полная версия: Словарь с ключом - частью массива
Начало » Python для новичков » Словарь с ключом - частью массива
1
Rumato
здравствуйте, подскажите, пожалуйста, как сделать вот это:
есть массив
S = [12, 121, 234, 343, 343, 343]
нужно сделать словарь где:
Code[S[i:]] = 1 
Code[S[:i]] = 0
i = некая цифра - индекс.
Как я понял (возможно неправильно), что в словаре нужно чтобы ключи были строкового типа, сейчас тут срезы списка поэтому получается ошибка.

Заранее спасибо за помощь.
Yurietc
Ключом словаря может быть только переменная неизменяемого типа (строка, число, кортеж) поэтому со списками ничего не получится, меняйте логику.
Enchantner
Rumato
ну приводите срезы списка к строке, в чем проблема? Я не очень понимаю, чего вы хотите добиться, если честно, но это самый простой вариант.
Ed
Или используйте tuple:
s = (12, 121, 234, 343, 343, 343)
code = {}
code[s[3:]] = 0
code[s[:3]] = 1
Yurietc
С кортежем могут возникнуть трудности в будущем - он тоже должен будет содержать только неизменяемые типы. В большом проекте я бы такой подход не использовал - внезапно могут появится ошибки в уже отлаженном и много раз используемом коде.
o7412369815963
Yurietc
С кортежем могут возникнуть трудности в будущем - он тоже должен будет содержать только неизменяемые типы. В большом проекте я бы такой подход не использовал - внезапно могут появится ошибки в уже отлаженном и много раз используемом коде.
>>> class A():
... pass
...
>>> a = A()
>>> d = {}
>>> d[(1,'s',a)] = 5
>>> d
{(1, 's', <__main__.A instance at 0xb767cbec>): 5}
Вроде как что угодно можно завернуть в кротеж, какие ошибки?
Yurietc
В том и проблемма, что все что угодно, и не ясно что будет в нем содержаться в будущем.
>>> {(2,):1}
{(2,): 1}
>>> {([],):1}

Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
{([],):1}
TypeError: unhashable type: 'list'
py.user.next
o7412369815963
Вроде как что угодно можно завернуть в кротеж, какие ошибки?
>>> class A:
... pass
...
>>> o = A()
>>> hash(o)
-881544782
>>> hash(([], 1))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB