In einem der Programme, die ich verwende, bekomme ich eine TypeError
beim Versuch, einen Wert aus dict type
Daten zu minen/zu analysieren.Wie behebt man den TypeError (Listenindizes müssen ganze Zahlen sein, nicht str) in diesem Programm?
Nachfolgend finden Sie ein kurzer Teil des Python-Programms:
for c in results:
print('value of c : ', c, type(c)) # what I added to see the issue with dict data
for ci, lr in c['chain_info'].iteritems():
outfile = open(lr.output_file, 'a')
write = outfile.write
if lr.number_vcf_lines > 0:
write(CHAIN_STRING.format(CHAIN_STRING,
from_chr=c['chrom'], from_length=lr.chromosome_length,
from_start=0, from_end=lr.chromosome_length,
to_chr=c['chrom'], to_length=lr.end_length,
to_start=0, to_end=lr.sums[0] + lr.last_fragment_size + lr.sums[2], id=c['chrom']))
write("\n")
Voll Nachricht Zurückverfolgungsfehler
Error Type: <type 'exceptions.TypeError'>
Error Value: list indices must be integers, not str
/home/everestial007/anaconda3/envs/g2gtools/lib/python2.7/site-packages/g2gtools/vcf2chain.py:456
Traceback (most recent call last):
File "/home/everestial007/anaconda3/envs/g2gtools/bin/g2gtools", line 4, in <module>
__import__('pkg_resources').run_script('g2gtools==0.1.31', 'g2gtools')
File "/home/everestial007/anaconda3/envs/g2gtools/lib/python2.7/site-packages/setuptools-27.2.0-py2.7.egg/pkg_resources/__init__.py", line 744, in run_script
File "/home/everestial007/anaconda3/envs/g2gtools/lib/python2.7/site-packages/setuptools-27.2.0-py2.7.egg/pkg_resources/__init__.py", line 1499, in run_script
File "/home/everestial007/anaconda3/envs/g2gtools/lib/python2.7/site-packages/g2gtools-0.1.31-py2.7.egg-info/scripts/g2gtools", line 117, in <module>
G2GToolsApp()
File "/home/everestial007/anaconda3/envs/g2gtools/lib/python2.7/site-packages/g2gtools-0.1.31-py2.7.egg-info/scripts/g2gtools", line 75, in __init__
getattr(self, args.command)()
File "/home/everestial007/anaconda3/envs/g2gtools/lib/python2.7/site-packages/g2gtools-0.1.31-py2.7.egg-info/scripts/g2gtools", line 90, in vcf2chain
g2gtools.g2g_commands.command_vcf2chain(sys.argv[2:], self.script_name + ' vcf2chain')
File "/home/everestial007/anaconda3/envs/g2gtools/lib/python2.7/site-packages/g2gtools/g2g_commands.py", line 375, in command_vcf2chain
vcf2chain(args.input, args.fasta, args.strain, args.output, args.keep, args.passed, args.quality, args.diploid)
File "/home/everestial007/anaconda3/envs/g2gtools/lib/python2.7/site-packages/g2gtools/vcf2chain.py", line 493, in vcf2chain
raise G2GError("Execution halted")
g2gtools.exceptions.G2GError: Execution halted
Die Github Speicherort der Datei: https://github.com/churchill-lab/g2gtools/blob/master/g2gtools/vcf2chain.py
wie Problem Looks mit der Zeile:
from_chr=c['chrom'], from_length=lr.chromosome_length,
Und der Chain_string etwas Autor erstellt als:
CHAIN_STRING = "chain 1000 {from_chr} {from_length} + {from_start} {from_end} " + "{to_chr} {to_length} + {to_start} {to_end} {id}"
ich die Werte dieser dict zu drucken versucht (durch eine print-Anweisung hinzufügen), um zu sehen, was das Problem war.
print('value of c : ', c, type(c)) # gave me
('value of c : ', {'chrom': '1', 'stats': OrderedDict([('ACCEPTED', 0)]), 'chain_info': {'right': <g2gtools.vcf2chain.VCFtoChainInfo object at 0x7fe9de396dd0>, 'left': <g2gtools.vcf2chain.VCFtoChainInfo object at 0x7fe9d9252d50>}}, <type 'dict'>)
Also, was ist das Problem hier? Was ist das Problem mit diesem Daten/Programm?
Eine vollständige Traceback wäre nützlich. – glibdud
@glibdud: Ich dachte, die Leute würden nach einer vollständigen Rückverfolgung fragen, aber manchmal werfen lange Fragen keine Aufmerksamkeit auf sich. Ich habe nur den kompletten Traceback gesetzt. – everestial007
Ich würde die vollständige Traceback nach dem Code empfehlen –