我有一个python 字典数据。我正在使用 Python 3 。字典就像下面这样:
dct = {
"3LHet": {
"g35": {
"exon": [
[
"197631",
"197742",
"-"
],
[
"198407",
"198470",
"-"
]
],
"gene": [
[
"197631",
"207214",
"-"
]
],
"CDS": [
[
"197631",
"197742",
"-"
],
[
"198407",
"198470",
"-"
]
]
},
"g17": {
"exon": [
[
"2010292",
"2011137",
"+"
]
],
"gene": [
[
"2010292",
"2011137",
"+"
]
],
"CDS": [
[
"2010292",
"2011137",
"+"
]
]
}
}
}
我正在下面的代码中访问字典。
for scaffold, scaffold_dct in dct.items():
for gene, gene_dct in scaffold_dct.items():
print(gene)
for feature, feature_dct in gene_dct.items():
print("\t"+feature)
输出
g35
exon
gene
CDS
g17
exon
gene
CDS
但我需要以波纹形式输出。有人可以帮我解决问题。
预期输出:
g17
gene
CDS
exon
g35
gene
CDS
exon
答案 0 :(得分:1)
您不能对这些项目进行重新排序,因为它们是字典,但您可以在打印时对它们进行排序:
lookup = {'exon' : 1, 'cds' : 2, 'gene' : 3, }
for key, item in sorted(dct["3LHet"].items()):
print(key)
for subkey, subitem in sorted(item.items(), key=lambda x: lookup.get(x[0].lower(), 0)):
print(' ', subkey)
您需要保留查找字典,以便按照您想要的顺序显示内部键。
输出:
g17
gene
CDS
exon
g35
gene
CDS
exon
如果你有更多需要显式排序的内部键,那么只需添加到你的查找中。