Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 3.x Python 3:使用if-else和附加到列表的Dict理解_Python 3.x_If Statement_Append_Dictionary Comprehension - Fatal编程技术网

Python 3.x Python 3:使用if-else和附加到列表的Dict理解

Python 3.x Python 3:使用if-else和附加到列表的Dict理解,python-3.x,if-statement,append,dictionary-comprehension,Python 3.x,If Statement,Append,Dictionary Comprehension,我有以下结构的词典列表: myList=[{"ID": someString, "sequence": someString2, "quality":[5,6,7]},{...,'quality':[55,66,77]},...] qualityDict={0:[5,55], 1:[6,66],2:[7,77] etc} 质量有一个数字列表作为值。第一个数字表示位置0处的质量,第二个数字表示位置1处的质量,以此类推 我想创建以下结构的每个位置的质量字典: myList=[{"ID": som

我有以下结构的词典列表:

myList=[{"ID": someString, "sequence": someString2, "quality":[5,6,7]},{...,'quality':[55,66,77]},...]
qualityDict={0:[5,55], 1:[6,66],2:[7,77] etc}
质量有一个数字列表作为值。第一个数字表示位置0处的质量,第二个数字表示位置1处的质量,以此类推

我想创建以下结构的每个位置的质量字典:

myList=[{"ID": someString, "sequence": someString2, "quality":[5,6,7]},{...,'quality':[55,66,77]},...]
qualityDict={0:[5,55], 1:[6,66],2:[7,77] etc}
我的想法是:

qualityDict={}
for entryDict in myList:
        qualityDict={pos:[entryDict['quality'][pos]] if pos not in qualityDict.keys() else qualityDict[pos].append(entryDict['quality'][pos]) for pos in range(0,len(entryDict['quality']))}
qualityDict构建为范围(0,当前质量的长度)内每个pos的pos:[值]字典。如果dict中没有键,则设置该键并设置该值,如果存在,则我希望附加到该值

例如,在第一次迭代之后,我有一个dict,其中0,1,2,3…第一个质量的长度(被迭代)作为键,每个键都有一个带有一个值的列表。 在第二次迭代中,我想将当时的质量附加到现有值的列表中

我得到了一个附加部分的错误:“NoneType”对象没有属性append

我错过了什么?谢谢:)

更新:myList,它创建了错误:

[{'name': '@SRR587217.1 1 length=489', 'sequence': 'NTCCGGATGATGTCGCTGTTGCTGACAATGGTAATACGTTGACGGGGCAATATGCAGTTCGCTGCATACCGGTCCGACCCCGTACTGCTCACGCAGCTTATCCAGCAGTGGCATCATTTTTTCCAGAGGCGGTCGAACTCCGCCTTCGCAAAAAAAAAGGGAGCCCGGCGGAGGAGAACGTTACTGCGGCGGAGGTTACGATTTTTCCGGTTCCGCTCCTTTAGAAGCCGGACGTCTACCCGGCTCTTTTTGCTGAACGTCAGCGTCTGAAAGAGCTGGAACGTGAAAATCGTGAACTGCGCCGCAGTAACGATATCCTTCGCCAGGCTTCCGCTTATTTTGCGAAGGCGGAGTTCGACCGCCTCTGGAAAAAATGATGCCACTGCTGGATAAGCTGCGTGAGCAGTACGGGGTCGGACCGGTATGCAGCGAACTGCATATTGCCCCGTCAACGTATTACCATTGTCAGCAACAGCGACATCATCCGGA', 'optional': '+SRR587217.1 1 length=490', 'quality': [2, 20, 27, 30, 30, 30, 30, 30, 35, 33, 35, 35, 35, 35, 33, 35, 38, 38, 38, 38, 38, 38, 40, 40, 40, 39, 39, 40, 40, 40, 40, 37, 38, 37, 39, 39, 39, 40, 40, 39, 40, 39, 40, 39, 38, 39, 39, 39, 39, 40, 38, 39, 39, 39, 37, 39, 40, 40, 40, 40, 40, 39, 39, 39, 39, 40, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 36, 39, 39, 39, 39, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 36, 36, 38, 38, 38, 38, 38, 34, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 13, 6, 6, 6, 8, 15, 9, 9, 16, 8, 13, 23, 8, 15, 9, 9, 8, 8, 13, 13, 30, 9, 6, 20, 13, 6, 8, 15, 8, 9, 8, 13, 8, 23, 13, 23, 6, 13, 6, 6, 6, 20, 8, 8, 9, 9, 9, 8, 9, 15, 9, 8, 9, 9, 9, 8, 13, 6, 6, 6, 6, 6, 6, 15, 9, 9, 9, 8, 8, 9, 15, 8, 30, 9, 9, 9, 8, 13, 19, 6, 15, 9, 8, 13, 8, 13, 6, 16, 25, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 13, 6, 13, 15, 23, 9, 9, 9, 16, 9, 8, 6, 6, 13, 15, 9, 25, 9, 9, 9, 30, 30, 32, 32, 30, 33, 33, 33, 35, 35, 35, 35, 35, 35, 35, 35, 38, 38, 38, 38, 38, 38, 39, 40, 39, 40, 40, 39, 39, 39, 40, 39, 40, 39, 39, 40, 39, 40, 40, 40, 39, 39, 39, 39, 37, 38, 39, 38, 37, 36, 37, 36, 34, 37, 32, 35, 39, 37, 39, 40, 39, 39, 37, 39, 33, 37, 38, 39, 39, 40, 37, 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, 35, 36, 39, 39, 39, 39, 35, 37, 37, 39, 39, 38, 20, 32, 32, 36, 36, 36, 38, 38, 38, 36, 38, 38, 38, 38, 38, 33, 35, 29, 26, 34, 38, 38, 36, 38, 36, 34, 36, 34, 36, 38, 38, 38, 36, 36, 36, 30, 30, 36, 38, 36, 38, 36, 38, 36, 36, 38, 38, 38, 38, 36, 34, 36, 34, 36, 38, 38, 38, 38, 38, 38, 38, 34, 36, 36, 36, 38, 32, 32, 35, 32, 34, 27, 29, 35, 35, 17, 23, 32, 13, 19, 8, 25, 34, 36, 38, 38, 38, 38, 29, 35, 34, 34, 36, 34, 34, 34, 36, 25, 9, 30, 34, 36, 30, 27, 23, 36, 34, 34, 34, 38, 13, 24, 34, 34, 34, 38, 30, 34, 30, 30, 34, 30, 34, 36, 34, 36, 36, 36, 9, 24, 30, 36, 29, 23, 29, 17, 23, 30, 36, 36, 30, 30, 36, 35, 38]}, {'name': '@SRR587217.2 2 length=463', 'sequence': 'NACGAACCGATTCTGTTTGGTCTGCCAATTATCATGAACCCGGTGATGTTTATCCCGTTTGTACTGGTACAACCGATTCTGGCGGCAATCACCCTGGCAGCGTACTACATGGGCATTATTCCTCCGGTGACCAATATTGCACCGTGGACCATGCCAACCGGTCTGGGAGCCTTCTTTAACACCAACGGTAGCGTCGTCGCATTGCTGGTTGCACTCTTCAACCTTGGTATCGCAACGTTAATTAATTAACGTTGCGATACCAAGGTTGAAGAGTGCAACCAGCAATGCGACGACGCTACCGTTGGTGTTAAAGAAGGCTCCCAGACCGGTTGGCATGGTCCACGGTGCAATATTGGTCACCGGAGGAATAATGCCCATGTAGTACGCTGCCAGGGTGATTGCCGCCAGAATCGGTTGTACCAGTACAAACGGGATAAACATCACCGGGTTCATGATAATTGGC', 'optional': '+SRR587217.2 2 length=486', 'quality': [2, 20, 27, 30, 30, 30, 28, 27, 27, 27, 31, 35, 30, 33, 35, 30, 37, 37, 37, 36, 37, 37, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 34, 37, 39, 39, 36, 29, 34, 36, 39, 39, 37, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 37, 38, 39, 39, 39, 39, 38, 38, 39, 39, 39, 39, 39, 35, 34, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 37, 37, 37, 37, 37, 37, 37, 36, 37, 37, 36, 37, 36, 25, 29, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 36, 37, 37, 37, 33, 34, 34, 34, 36, 32, 35, 26, 29, 36, 36, 37, 36, 37, 37, 36, 37, 37, 36, 36, 37, 37, 37, 35, 36, 37, 35, 36, 37, 37, 37, 37, 37, 37, 37, 34, 36, 34, 32, 26, 35, 35, 35, 36, 36, 32, 36, 36, 37, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 36, 37, 37, 36, 36, 35, 32, 30, 32, 36, 29, 30, 32, 35, 35, 36, 35, 35, 23, 36, 36, 37, 37, 37, 37, 37, 36, 37, 36, 23, 9, 25, 32, 36, 36, 36, 37, 37, 36, 36, 30, 34, 36, 36, 32, 30, 30, 36, 36, 36, 36, 36, 36, 26, 29, 32, 36, 9, 23, 34, 37, 30, 30, 30, 32, 30, 33, 33, 30, 35, 35, 35, 35, 35, 35, 35, 35, 37, 37, 37, 37, 37, 37, 34, 37, 39, 39, 40, 40, 39, 37, 37, 39, 40, 39, 38, 39, 37, 36, 37, 37, 39, 39, 39, 39, 39, 39, 39, 39, 35, 29, 29, 34, 36, 39, 39, 39, 40, 35, 26, 36, 36, 37, 36, 37, 32, 36, 39, 39, 39, 39, 39, 39, 39, 37, 37, 39, 39, 39, 39, 39, 39, 39, 37, 35, 34, 36, 32, 36, 33, 31, 35, 35, 36, 36, 36, 37, 36, 37, 37, 37, 33, 31, 34, 36, 36, 32, 33, 34, 36, 37, 36, 36, 36, 34, 32, 36, 32, 34, 32, 35, 30, 26, 35, 36, 37, 37, 25, 32, 36, 37, 37, 36, 36, 32, 36, 37, 36, 36, 36, 36, 36, 36, 36, 35, 37, 36, 29, 36, 37, 36, 36, 36, 37, 30, 32, 36, 30, 25, 34, 36, 35, 35, 35, 35, 29, 36, 34, 34, 36, 36, 36, 23, 32, 29, 32, 36, 36, 37, 37, 37, 32, 34, 36, 30, 25, 32, 36, 36, 36, 36, 36, 36, 37, 36, 25, 34, 36, 36, 36, 36, 36, 9, 30, 30, 29, 23, 23, 32, 25, 34, 32, 32, 36, 34, 9, 25, 34, 34, 36, 37]}, {'name': '@SRR587217.4 4 length=460', 'sequence': 'NTCCATGACTTCTGCACGCGTCGGCATCGGGTTAGTAATCATTGACTCCATCATCTGGGTCGCCGTGATTACCGCTCGGTTTAGCTGACGCGCACGACGGATCAACGCTTTCTGAATGCCGACCAGTTCCGGGTCGCCAATTTCCACACCGAGGTCGCCACGTGCAACCATTACCACGTCAGAGGCGAGGATGATGTCATCCATTGCATCCTGGCTGCAAACGGCTTCCGCACGTTCAACCTTGGCAACAAGTGATGCGAAAATTGTTGCCAAGGTTGAACGTGCGGAAGCCGTTTGCAGCCAGGATGCAATGGATGACATCATCCTCGCCTCTGACGTGGTAATGGTTGCACGTGGCGACCTCGGTGTGGAAATTGGCGACCCGGAACTGGTCGGCATTCAGAAAGCGTTGATCCGTCGTGCGCGTCAGCTAAACCGAGCGGTAATCACGGCGACCCAG', 'optional': '+SRR587217.4 4 length=502', 'quality': [2, 20, 20, 30, 30, 30, 33, 33, 35, 35, 35, 35, 35, 35, 35, 35, 38, 38, 38, 38, 37, 37, 39, 39, 39, 39, 39, 40, 39, 39, 39, 37, 39, 39, 40, 38, 38, 39, 40, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39, 40, 40, 40, 37, 39, 37, 39, 39, 39, 36, 39, 39, 40, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, 39, 39, 39, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 34, 38, 38, 38, 38, 38, 38, 38, 38, 36, 38, 38, 38, 38, 38, 38, 34, 32, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 34, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 36, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 23, 25, 34, 36, 36, 38, 36, 36, 36, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 36, 38, 38, 38, 34, 38, 38, 38, 38, 38, 38, 38, 38, 35, 23, 29, 38, 38, 38, 38, 29, 35, 38, 36, 36, 36, 36, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 36, 30, 30, 30, 30, 30, 33, 33, 32, 35, 35, 35, 35, 35, 35, 35, 35, 38, 38, 38, 38, 38, 38, 40, 40, 40, 39, 40, 39, 40, 39, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 40, 39, 34, 37, 39, 39, 39, 38, 39, 39, 40, 39, 37, 37, 39, 39, 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 38, 39, 40, 39, 40, 38, 39, 39, 34, 35, 36, 39, 39, 39, 39, 39, 30, 35, 35, 37, 37, 37, 35, 37, 39, 37, 37, 38, 38, 38, 38, 37, 37, 37, 36, 38, 38, 38, 33, 33, 38, 38, 36, 38, 34, 36, 34, 36, 36, 38, 36, 38, 38, 38, 36, 36, 38, 38, 38, 38, 38, 38, 35, 38, 38, 27, 32, 30, 34, 38, 36, 38, 38, 38, 38, 38, 23, 34, 38, 38, 36, 36, 34, 36, 38, 38, 38, 36, 34, 29, 36, 36, 36, 34, 34, 38, 36, 38, 35, 38, 38, 38, 38, 38, 19, 23, 34, 36, 36, 30, 34, 16, 30, 36, 34, 29, 17, 23, 35, 35, 35, 15, 19, 23, 34, 34, 34, 36, 36, 34, 32, 38, 38, 23, 32, 38, 38, 38]}]

向@balderman致以亲切的问候,从他身上摘取的示例数字,我会这样做的。它不会使用dict理解,但看起来

from collections import defaultdict

myList = [...]  # as you described
qualityDict = defaultdict(list)

for entryDict in myList:
    for indx, qualNum in enumerate(entryDict['quality']):
        qualityDict[indx].append(qualNum)
要使用dict理解来实现这一点,您可以为
myList
中的每个条目分别创建一个
qualityDict
,然后以某种方式合并它们(但这可能需要更多的编码)

编辑:听写理解的一种方式

正如我之前所说的,使用dict理解最简单的方法是为每个条目分别创建一个
qualityDict
,然后以某种方式组合它们。即

myList = [...] # as before
qualityDicts = []

# each entry gets a separate quality dict
for entryDict in myList:
    qualityDicts.append(
        {indx: qualNum for indx,qualNum in enumerate(entryDict['quality'])
    )

# now combine, not sure of a pretty way to do it with dict comprehensions
qualityDict = {}
for qdict in qualityDicts:
    for indx, qNum in qdict.items():
        qualityDict[indx] = qualityDict.get(indx, []) + [qNum]

我这样做的方式是用。它不会使用dict理解,但看起来

from collections import defaultdict

myList = [...]  # as you described
qualityDict = defaultdict(list)

for entryDict in myList:
    for indx, qualNum in enumerate(entryDict['quality']):
        qualityDict[indx].append(qualNum)
要使用dict理解来实现这一点,您可以为
myList
中的每个条目分别创建一个
qualityDict
,然后以某种方式合并它们(但这可能需要更多的编码)

编辑:听写理解的一种方式

正如我之前所说的,使用dict理解最简单的方法是为每个条目分别创建一个
qualityDict
,然后以某种方式组合它们。即

myList = [...] # as before
qualityDicts = []

# each entry gets a separate quality dict
for entryDict in myList:
    qualityDicts.append(
        {indx: qualNum for indx,qualNum in enumerate(entryDict['quality'])
    )

# now combine, not sure of a pretty way to do it with dict comprehensions
qualityDict = {}
for qdict in qualityDicts:
    for indx, qNum in qdict.items():
        qualityDict[indx] = qualityDict.get(indx, []) + [qNum]

我假设您的数据结构是什么样子的

代码如下:

myList = [{'ID': 'someString', 'sequence': 'someString2', "quality": [5, 6, 7]},
          {'ID': 'someString1', 'sequence33': 'someString21', "quality": [52, 64, 77]},
          {'ID': 'someString13', 'sequenc3e': 'someString213', "quality": [532, 634, 
         737]}]

qualityDict = {idx: val['quality'] for idx, val in enumerate(myList)}
print(qualityDict)
输出:

{0: [5, 6, 7], 1: [52, 64, 77], 2: [532, 634, 737]}
输出(基于更新的“myList”):


我假设您的数据结构是什么样子的

代码如下:

myList = [{'ID': 'someString', 'sequence': 'someString2', "quality": [5, 6, 7]},
          {'ID': 'someString1', 'sequence33': 'someString21', "quality": [52, 64, 77]},
          {'ID': 'someString13', 'sequenc3e': 'someString213', "quality": [532, 634, 
         737]}]

qualityDict = {idx: val['quality'] for idx, val in enumerate(myList)}
print(qualityDict)
输出:

{0: [5, 6, 7], 1: [52, 64, 77], 2: [532, 634, 737]}
输出(基于更新的“myList”):


您能否发布生成错误和预期结果的myList的实际值?已添加。当我没有在我的值(pos:[…])周围放置方括号时,它会将一个整数设置为值(适合第一次迭代),然后正确地给出错误,我无法将其附加到整数。因此,我在获取列表中的值时遇到了问题。您能否为我的列表发布生成错误和预期结果的实际值。当我没有在我的值(pos:[…])周围放置方括号时,它会将一个整数设置为值(适合第一次迭代),然后正确地给出错误,我无法将其附加到整数。因此,我在获取列表中的值时遇到问题。哦,我需要清除我想要的结果,对不起:(我想要:{0:[5,52532],1:[6,64634],2:[7,77737]}很抱歉,之前没有更好地编写它:/OK。请明确您正在寻找的确切输出是什么。引入一个简化版的输入数据结构,以便易于理解。哦,我需要澄清我想要的结果,抱歉:(我想要:{0:[5,52532],1:[6,64634],2:[7,77737]}很抱歉,之前没有更好地编写它:/OK。请明确您想要的确切输出是什么。请介绍您输入数据结构的简化版本,以便易于理解。