2016-05-18 3 views

ответ

1

Вы хотите повторить, например, список. Помните, что ['a'] + ['b'] = ['a', 'b'].

columns=['code', 'name'] + ['aa', 'ab'] 
>>> columns 
['code', 'name', 'aa', 'ab'] 
2

Используйте кортеж, а не список:

>>> pandas.DataFrame(columns=('code', 'name', ('aa', 'ab'))) 
Empty DataFrame 
Columns: [code, name, (aa, ab)] 
Index: [] 

словарь ключи должны быть «hashable», что означает, что при том же значение ключа, вы всегда получите тот же ответ (https://docs.python.org/2/glossary.html), даже если значения хранятся в разных ячейках памяти.

Рассмотрим следующий пример:

>>> hash(('a','b')), hash(('a','b')) 
(-3816799034373630758, -3816799034373630758) 

>>> id(('a','b')), id(('a','b')) 
(4329654248, 4369596640) 

Две детали имеют различные идентификаторы (то есть, они хранятся в разных местах в памяти), но они имеют то же самое значение хеш-функции; с хешем кортежа реализуется с использованием хэшей битов, составляющих кортеж.

В списках не указан метод __hash__. Даже если бы они это сделали, значение хэша не было бы одинаковым на протяжении всего жизненного цикла объекта. Это потому, что список изменен; добавление нового элемента в список изменит его хеш-значение.