我有一张这样的单子
[['N_ALA_A0001', [9.25, 24.41, 64.13]]]
[['O_ALA_A0001', [9.05, 21.51, 64.38]]]
[['N_ALA_A0001', [9.25, 24.41, 64.13]]]
[['N_TYR_A0002', [7.84, 21.93, 66.24]]]
[['N_ALA_A0001', [9.25, 24.41, 64.13]]]
[['O_TYR_A0002', [5.48, 20.92, 65.6]]]
[['N_ALA_A0001', [9.25, 24.41, 64.13]]]
[['N_VAL_A0003', [6.19, 18.75, 65.89]]]
[['N_ALA_A0001', [9.25, 24.41, 64.13]]]
我要删除多余的列表并打印uniq行
^{pr2}$我试过,strip
,set
,uniq
,但这不起作用;它给出了错误:
AttributeError: 'list' object has no attribute 'readline'
print set(uniqlist)
TypeError: unhashable type: 'list'
任何帮助都将不胜感激。在
可以将所有内部列表转换为元组,然后生成集合,然后再将其转换回:
如果您想保留订单,可以使用OrderedDict:
^{pr2}$注意,我的解决方案检查列表的整个元素的唯一性。如果只想检查第一个元素(
N_ALA_A0001, ...
),可以使用OrderedDict试试这个
由于列表不可损坏,
set(the_list)
将不起作用。使用str
将其转换为散列类型的字符串。在首先,移除一行嵌套:
现在,一个简单的字典理解就能得到你所需要的:
^{pr2}$它给出了:
如果需要的话,可以很容易地转换回列表。在
正如@m01所指出的,如果您想保持这些有序,可以使用
OrderedDict
(以及一个小的语法更改)轻松完成:相关问题 更多 >
编程相关推荐