Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何打印具有匹配的第一项的数组的第n个元素?_Python - Fatal编程技术网

Python 如何打印具有匹配的第一项的数组的第n个元素?

Python 如何打印具有匹配的第一项的数组的第n个元素?,python,Python,我在Python中工作,我有以下数据: ['DDX58_HUMAN', 'gnl|CDD|256537', '819', '923'] ['DDX58_HUMAN', 'gnl|CDD|260076', '111', '189'] ['DDX58_HUMAN', 'gnl|CDD|260076', '4', '93'] ['DDX58_HUMAN', 'gnl|CDD|238005', '258', '410'] ['DDX58_HUMAN', 'gnl|CDD|238034', '606',

我在Python中工作,我有以下数据:

['DDX58_HUMAN', 'gnl|CDD|256537', '819', '923']
['DDX58_HUMAN', 'gnl|CDD|260076', '111', '189']
['DDX58_HUMAN', 'gnl|CDD|260076', '4', '93']
['DDX58_HUMAN', 'gnl|CDD|238005', '258', '410']
['DDX58_HUMAN', 'gnl|CDD|238034', '606', '741']
['DICER_HUMAN', 'gnl|CDD|239209', '886', '1008']
['DICER_HUMAN', 'gnl|CDD|238333', '1681', '1846']
['DICER_HUMAN', 'gnl|CDD|238333', '1296', '1376']
['DICER_HUMAN', 'gnl|CDD|238333', '1547', '1583']
['DICER_HUMAN', 'gnl|CDD|251903', '630', '722']
['DICER_HUMAN', 'gnl|CDD|238005', '58', '209']
['DICER_HUMAN', 'gnl|CDD|238034', '444', '553']
匹配第一个项目后,我需要打印第二、第三和第四个项目,如下所示:

DDX58_HUMAN gnl|CDD|256537 819 923 gnl|CDD|260076 111 189 gnl|CDD|260076 4 
93 gnl|CDD|238005 258 410 gnl|CDD|238034 606 741
DICER_HUMAN gnl|CDD|239209 886 1008 gnl|CDD|238333 1681 1846 gnl|CDD|238333 
1296 1376 gnl|CDD|238333 1547 1583 gnl|CDD|251903 630 722 gnl|CDD|238005 58 
209 gnl|CDD|238034 444 553

如何实现这一点?

以下是一个示例代码,用于说明您要执行的操作: 我假设您在python列表中有这些数据 您只需遍历每个列表,并根据列表的第一个元素将值存储在字典中,就可以获得唯一的条目

mylist = [['DDX58_HUMAN', 'gnl|CDD|256537', '819', '923']
,['DDX58_HUMAN', 'gnl|CDD|260076', '111', '189']
,['DDX58_HUMAN', 'gnl|CDD|260076', '4', '93']
,['DDX58_HUMAN', 'gnl|CDD|238005', '258', '410']
,['DDX58_HUMAN', 'gnl|CDD|238034', '606', '741']
,['DICER_HUMAN', 'gnl|CDD|239209', '886', '1008']
,['DICER_HUMAN', 'gnl|CDD|238333', '1681', '1846']
,['DICER_HUMAN', 'gnl|CDD|238333', '1296', '1376']
,['DICER_HUMAN', 'gnl|CDD|238333', '1547', '1583']
,['DICER_HUMAN', 'gnl|CDD|251903', '630', '722']
,['DICER_HUMAN', 'gnl|CDD|238005', '58', '209']
,['DICER_HUMAN', 'gnl|CDD|238034', '444', '553']]

myDict = {}
for items in mylist :
    myDict.setdefault(items[0],[]).append(" ".join(x for x in items[1:]))

for k,v in myDict.items():

    print(k," : "," ".join(x for x in v))
输出

DDX58_HUMAN  :  gnl|CDD|256537 819 923 gnl|CDD|260076 111 189 gnl|CDD|260076 4 93 gnl|CDD|238005 258 410 gnl|CDD|238034 606 741
DICER_HUMAN  :  gnl|CDD|239209 886 1008 gnl|CDD|238333 1681 1846 gnl|CDD|238333 1296 1376 gnl|CDD|238333 1547 1583 gnl|CDD|251903 630 722 gnl|CDD|238005 58 209 gnl|CDD|238034 444 553
如果数据在.txt文件中: 只需阅读文本文件并使用
re
module删除不需要的大括号,上述逻辑就可以了

import re
with open("data.txt") as mylist :

    myDict = {}
    mainList = []
    for items in mylist.readlines() :
        dataString = re.sub(r"[\[[\]]","",items.rstrip()).split(",")
        mainList.append(dataString)

myDict = {}
for items in mainList :
    myDict.setdefault(items[0],[]).append("".join(x for x in items[1:]))

for k,v in myDict.items():

    print(k," : ","".join(x for x in v))
输出:

'DICER_HUMAN'  :   'gnl|CDD|239209' '886' '1008' 'gnl|CDD|238333' '1681' '1846' 'gnl|CDD|238333' '1296' '1376' 'gnl|CDD|238333' '1547' '1583' 'gnl|CDD|251903' '630' '722' 'gnl|CDD|238005' '58' '209' 'gnl|CDD|238034' '444' '553'
'DDX58_HUMAN'  :   'gnl|CDD|256537' '819' '923' 'gnl|CDD|260076' '111' '189' 'gnl|CDD|260076' '4' '93' 'gnl|CDD|238005' '258' '410' 'gnl|CDD|238034' '606' '741'

现在还不清楚你想在这里做什么。“匹配第一个项目”是什么意思?也许你应该说你尝试了什么,为什么它不能满足你的需要。所以人们不喜欢从头开始写代码。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另见: