我有一个具有以下结构的词典列表:
myList=[{"ID": someString, "sequence": someString2, "quality":[5,6,7]},{...,'quality':[55,66,77]},...]
质量具有作为数值的数字列表。第一个数字代表位置0的质量,第二个数字代表位置1的质量,等等。
我要创建一个具有以下结构的按位置质量字典:
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被构建为pos:[value]字典,用于范围(0,当前质量的长度)中的每个pos。如果字典中不存在该键,则将其设置并设置值;如果存在,则要附加到该值。
因此,例如,在第一次迭代之后,我有一个字典,其首质量为0、1、2、3 ...的长度(已迭代)作为键,并且每个键都有一个带有一个值的列表。 在第二次迭代中,我想将当时的质量附加到现有值的列表中。
附加部分出现错误:'NoneType'对象没有附加属性
我想念什么?谢谢:)
更新: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,例如从他那里拿来的数字
答案 0 :(得分:2)
我使用collections.defaultdict
的方式。它不会使用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理解做到这一点,您可以为qualityDict
中的每个条目分别创建一个myList
,然后以某种方式进行合并(但这可能需要更多的编码)。
编辑:一种具有字典理解力的方法
就像我之前说过的那样,通过字典理解来做到这一点的最简单方法是为每个条目分别创建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]
答案 1 :(得分:1)
我对您的数据结构如何进行了假设。
以下代码:
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”):
{0: [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], 1: [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], 2: [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]}