Soy nuevo en Python, lo siento si he cometido algún error

Tengo datos como este

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

La primera columna es la {clave} y las columnas restantes serán los {valores} en el par clave -> valor de un elemento del diccionario.

¿Es esto posible en Python?

Gracias por las sugerencias

0
Lakshmi KrishnaKumaar 2 mar. 2018 a las 05:26

3 respuestas

La mejor respuesta

En base a las respuestas y sugerencias anteriores de muchos sitios diferentes, me gustaría presentar mi respuesta a la pregunta que publiqué

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

Resultado:

{'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')}

Gracias por el apoyo brindado por todos

0
Lakshmi KrishnaKumaar 8 mar. 2018 a las 09:53

@Delirious Lettuce respondió anteriormente a su ejemplo específico. Sin embargo, el título de la pregunta: ¿Puede una clave de diccionario ser un elemento de la lista? Necesita más aclaraciones.

Una lista es un objeto mutable. Si cambia los índices de la lista, no se reflejará en las teclas del diccionario. Python creará la clave tras la asignación y no apuntará al índice original.

De la documentación del modelo de Python Data:

Los únicos tipos de valores no aceptables como claves son valores que contienen listas o diccionarios u otros tipos mutables que se comparan por valor en lugar de por identidad de objeto, la razón es que la implementación eficiente de los diccionarios requiere que el valor hash de una clave permanezca constante. Los tipos numéricos utilizados para las teclas obedecen las reglas normales para la comparación numérica: si dos números se comparan igual (por ejemplo, 1 y 1.0), se pueden usar indistintamente para indexar la misma entrada del diccionario,

0
manandearth 2 mar. 2018 a las 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 mar. 2018 a las 02:31