リストの位置をハードコーディングせずに、jsonディクショナリのリスト内のアイテムを識別することは可能ですか?

Slowat_Kela

私はこのjsondictを持っています:

output = {'data': {'entries': [{'rcsb_id': '1A17', 'rcsb_entry_info': {'assembly_count': 2, 'resolution_combined': [2.45]}, 'rcsb_accession_info': {'deposit_date': '1997-12-23T00:00:00Z'}, 'struct': {'pdbx_CASP_flag': None, 'pdbx_descriptor': 'SERINE/THREONINE PROTEIN PHOSPHATASE 5', 'pdbx_model_details': None, 'pdbx_model_type_details': None, 'title': 'TETRATRICOPEPTIDE REPEATS OF PROTEIN PHOSPHATASE 5'}, 'polymer_entities': [{'rcsb_entity_source_organism': [{'ncbi_scientific_name': 'Homo sapiens'}], 'rcsb_polymer_entity_container_identifiers': {'entry_id': '1A17', 'asym_ids': ['A'], 'auth_asym_ids': ['A'], 'entity_id': '1', 'reference_sequence_identifiers': [{'database_name': 'UniProt', 'database_accession': 'P53041'}]}, 'rcsb_polymer_entity': {'pdbx_mutation': None, 'pdbx_description': 'SERINE/THREONINE PROTEIN PHOSPHATASE 5'}, 'uniprots': [{'rcsb_id': 'P53041'}], 'entity_poly': {'rcsb_mutation_count': 0, 'rcsb_sample_sequence_length': 166}}], 'assemblies': [{'pdbx_struct_assembly_gen': [{'assembly_id': '1', 'asym_id_list': ['A', 'B', 'C', 'D']}], 'rcsb_struct_symmetry': [{'kind': 'Global Symmetry', 'symbol': 'D2', 'oligomeric_state': 'Homo 4-mer'}]}, {'pdbx_struct_assembly_gen': [{'assembly_id': '2', 'asym_id_list': ['A', 'B', 'C', 'D']}], 'rcsb_struct_symmetry': [{'kind': 'Global Symmetry', 'symbol': 'C2', 'oligomeric_state': 'Homo 2-mer'}]}]}]}}

rcsb_idを引き出したい場合は、次のように記述できます。

print(output['data']['entries'][0]['rcsb_id'])

これを行う(おそらくよりPythonicな)方法はありますか?0でハードコーディングする必要がないため、コードが壊れにくくなります(たとえば、アイテムが将来リスト内の別の場所に移動される場合など) ?)

IoaTzimas

以下を使用できます。リスト内のdictの位置に関係なく、目的の出力が出力されます。

print([i['rcsb_id'] for i in output['data']['entries'] if 'rcsb_id' in i][0])

出力:

1A17

'rcsb_id'は1つのdictでのみ検出されると思います。複数回検出され、それらすべてが必要な場合は[0]、ソリューションからインデックスを削除すると、値のリストが表示されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ