如果我犯了任何错误,我是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
第一列是{key},其余列是键中的{values} - >字典元素的值对。
这在python中是否可行?
感谢您的建议
答案 0 :(得分:1)
>>> 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 :(得分:0)
你的具体例子在上面由@Delirious Lettuce回答,但问题的标题:字典键是否可以作为列表元素,需要进一步澄清。
列表是一个可变对象,如果更改列表索引,它将不会反映在字典键中。 Python将在赋值时创建密钥,而不会指向原始索引。
唯一不能作为键接受的值是包含列表或字典或其他可变类型的值,这些值通过值而不是对象标识进行比较,原因是字典的有效实现需要键的哈希值保持不变。用于键的数字类型遵循用于数字比较的常规规则:如果两个数字相等(例如,1和1.0),那么它们可以互换地用于索引相同的字典条目,
答案 2 :(得分:0)
基于上述许多不同网站的答案和建议,我想对我发布的问题提出答案
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')}
感谢所有
提供的支持