首页 > 解决方案 > 计算列表列表中的元素

问题描述

我有一个列表如下

[
 ['DDX11L1', 'lincRNA', 'chr1', 11869, 14409],
 ['WASH7P', 'lincRNA', 'chr1', 14404, 29570],
 ['MIR1302-2HG', 'lincRNA', 'chr1', 29554, 31109],
 ['FAM138A', 'lincRNA', 'chr1', 34554, 36081],
 ['OR4G4P', 'unprocessed_pseudogene', 'chr2', 52473, 53312],
 ['DDX11L1', 'transcribed_unprocessed_pseudogene', 'chr2', 11869, 14409],
 ['WASH7P', 'lincRNA', 'chr2', 14404, 29570],
 ['MIR1302-2HG', 'lincRNA', 'chr1', 29554, 31109],
 ['FAM138A', 'lincRNA', 'chr3', 34554, 36081],
 ['OR4G4P', 'unprocessed_pseudogene', 'chr2', 52473, 53312]
]

内部列表'chr'将与'chr1','chr2'和不同'chrs'。取决于那个 chr,我想计算有多少'lincRNA'存在。(不是所有的'chrs'都会有'lincRNA'

示例答案:

我想要的结果如下:

There are 5 'lincRNA' with 'chr1'
There are 1 'lincRNA' with 'chr2'

提前致谢

标签: pythonpython-3.xlistdictionary

解决方案


使用 dict 的解决方案

store = {}

L = [['DDX11L1', 'lincRNA', 'chr1', 11869, 14409], 
['WASH7P', 'lincRNA', 'chr1', 14404, 29570], 
['MIR1302-2HG', 'lincRNA', 'chr1', 29554, 31109], 
['FAM138A', 'lincRNA', 'chr1', 34554, 36081], 
['OR4G4P', 'unprocessed_pseudogene', 'chr2', 52473, 53312], 
['DDX11L1', 'transcribed_unprocessed_pseudogene', 'chr2', 11869, 14409], 
['WASH7P', 'lincRNA', 'chr2', 14404, 29570], 
['MIR1302-2HG', 'lincRNA', 'chr1', 29554, 31109], 
['FAM138A', 'lincRNA', 'chr3', 34554, 36081], 
['OR4G4P', 'unprocessed_pseudogene', 'chr2', 52473, 53312]]

if L:
    for rec in L:
        if rec[1] == "lincRNA":
            if rec[2] in store:
                store[rec[2]] = store[rec[2]] + 1
            else:
                store[rec[2]] = 1

for key, value in store.items():
    print("There are '{0}' linkRNA with '{1}'".format(value, key))

推荐阅读