Я новичок в Python извините, если я сделал какие-либо ошибки

У меня есть такие данные

ENSG1   1:24    2:56    3:47    4:68    5:89
ENSG2   1:25    2:57    3:48    4:69    5:90
ENSG3   1:26    2:58    3:49    4:70    5:91

Первый столбец - это {ключ}, а остальные столбцы - это {значения} в паре ключ -> значение элемента словаря.

Это возможно в питоне ??

Спасибо за предложения

0
Lakshmi KrishnaKumaar 2 Мар 2018 в 05:26

3 ответа

Лучший ответ

Основываясь на вышеупомянутых ответах и предложениях от многих различных сайтов, я хотел бы представить свой ответ на вопрос, который я разместил

import numpy as np
keys = np.array(("key1","key2","key3"))
values = np.array([['20','30','40'],['56','76','80',],['57','70','89']])
d = {}
for k in set(keys):
    d[k] = values[k==keys]
print d

Результат:

{'key3': array([['57', '70', '89']],
      dtype='|S2')}
{'key3': array([['57', '70', '89']],
      dtype='|S2'), 'key2': array([['56', '76', '80']],
      dtype='|S2')}
{'key3': array([['57', '70', '89']],
      dtype='|S2'), 'key2': array([['56', '76', '80']],
      dtype='|S2'), 'key1': array([['20', '30', '40']],
      dtype='|S2')}

Спасибо за поддержку, оказанную всеми

0
Lakshmi KrishnaKumaar 8 Мар 2018 в 09:53

Ответ на ваш конкретный пример приведен выше @Delirious Lettuce, однако заголовок вопроса: может ли словарный ключ быть элементом списка, нуждается в дальнейшем уточнении.

Список является изменяемым объектом, если вы измените список индексов, он не будет отражаться в словарных ключах. Python создаст ключ при назначении и не будет указывать на исходный индекс.

Из документации модели данных Python:

Единственными типами значений, которые не являются приемлемыми в качестве ключей, являются значения, содержащие списки или словари или другие изменяемые типы, которые сравниваются по значению, а не по идентичности объекта, поскольку эффективная реализация словарей требует, чтобы значение хеш-значения ключа оставалось постоянным. Числовые типы, используемые для ключей, подчиняются обычным правилам для числового сравнения: если два числа сравниваются равными (например, 1 и 1,0), то они могут использоваться взаимозаменяемо для индексации одной и той же словарной статьи,

0
manandearth 2 Мар 2018 в 07:44
>>> test = """\
... ENSG1   1:24    2:56    3:47    4:68    5:89
... ENSG2   1:25    2:57    3:48    4:69    5:90
... ENSG3   1:26    2:58    3:49    4:70    5:91"""
>>> result = {}
>>> for row in test.splitlines():
...     key, *values = row.split()
...     result[key] = values
... 
>>> result
{'ENSG1': ['1:24', '2:56', '3:47', '4:68', '5:89'], 'ENSG2': ['1:25', '2:57', '3:48', '4:69', '5:90'], 'ENSG3': ['1:26', '2:58', '3:49', '4:70', '5:91']}
1
G_M 2 Мар 2018 в 02:31