Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

gestion des clés [valeur] sur différent dict

+3 votes

J'ai 3 structures:
et leur dénominateur commun est cette valeur ‘d83a2a6a-61f6-494a-a67b-3603d1a24291’

cette valeur dans la structure "images" a pour clé ‘instanceuuid’
Et dans SWAP and HOME la clé s'appelle ‘server
id’
voici la structure:
images:

{
    'instance_type_ephemeral_gb': '0', 
    'file': '/v2/images/66ed6348-e96b-42b4-afd2-245892f93263/file', 
    'image_state': 'available', 'schema': '/v2/schemas/image', 
    'backup_type': 'daily', 
    'container_format': 'bare', 
    'owner_id': 'f4467a6710f84dc33900393119a128473', 
    'network_allocated': 'True', 
    'instance_type_vcpus': '2', 
    'instance_type_rxtx_factor': '1.0', 
    'checksum': '95f93551e3a292fa5d6804f51a43bbd5', 
    'created_at': '2015-06-26T03:11:33Z', 
    'instance_uuid': 'd83a2a6a-61f6-494a-a67b-3603d1a24291', 
    'status': 'active', 
    'id': '66ed6348-e96b-42b4-afd2-245892f93263', 
    'instance_type_id': '29', 
    'protected': False, 
    'self': '/v2/images/66ed6348-e96b-42b4-afd2-245892f93263', 
    'instance_type_root_gb': '10', 
    'visibility': 'private', 
    'image_type': 'backup', 
    'instance_type_name': '2_vCPU_RAM_4G_HD_10G', 
    'min_disk': 10, 
    'tags': [], 
    'image_location': 'snapshot', 
    'instance_type_memory_mb': '4096', 
    'disk_format': 'qcow2', 
    'os': 'nowindows', 
    'updated_at': '2015-06-26T03:58:29Z', 
    'instance_type_flavorid': '104', 
    'user_id': '616ec511929145da961f3f0cc25b12ab', 
    'base_image_ref': '4995a0e7-e460-4163-97a0-995850e3cbec', 
    'min_ram': 0, 
    'size': 6872825856, 
    'owner': 'f4467a6710f84dc33900393119a128473', 
    'instance_type_swap': '0', 
    'name': 'daily backup PROD-WBDD-1PP'
}

SWAP

{
   'links': [
          {
        'href': 'https://cloud.numergy.com:8776/v2/f4467a6710f84dc33900393119a128473/volumes/545ac441-732b-4832-955a-1986452b0822', 
            'rel': 'self'
          }, 
          {
        'href': 'https://cloud.numergy.com:8776/f4467a6710f84dc33900393119a128473/volumes/545ac441-732b-4832-955a-1986452b0822', 
        'rel': 'bookmark'
          }
            ], 
   'bootable': 'false', 
   'name': 'PROD-WBDD-1PP_SWAP', 
   'source_volid': None, 
   'availability_zone': 'IDF-01', 
   'metadata': {
        'readonly': 'False', 
        'attached_mode': 'rw'
        }, 
   'description': '', 
   'snapshot_id': None, 
   'attachments': [
             {
              'device': '/dev/vdb', 
              'id': '545ac441-732b-4832-955a-1986452b0822', 
              'volume_id': '545ac441-732b-4832-955a-1986452b0822', 
              'host_name': None, 
              'server_id': 'd83a2a6a-61f6-494a-a67b-3603d1a24291'
              }
           ], 
   'created_at': '2015-03-24T13:50:31.000000', 
   'encrypted': False, 
   'status': 'in-use', 
   'volume_type': None, 
   'size': 2, 
   'os-vol-tenant-attr:tenant_id': 'f4467a6710f84dc33900393119a128473', 
   'user_id': 'a03fd08bd81146d4b71d6874e6ba5765', 
   'id': '545ac441-732b-4832-955a-1986452b0822'
}

Home

{'links': [{'href': 'https://cloud.numergy.com:8776/v2/f4467a6710f84dc33900393119a128473/volumes/dc0f64cb-46da-45e6-8378-e76ac463ad7d', 'rel': 'self'}, {'href': 'https://cloud.numergy.com:8776/f4467a6710f84dc33900393119a128473/volumes/dc0f64cb-46da-45e6-8378-e76ac463ad7d', 'rel': 'bookmark'}], 'bootable': 'false', 'name': 'PROD-WBDD-1PP_HOME', 'source_volid': None, 'availability_zone': 'IDF-01', 'metadata': {'readonly': 'False', 'attached_mode': 'rw'}, 'description': '', 'snapshot_id': None, 'attachments': [{'device': '/dev/vdc', 'id': 'dc0f64cb-46da-45e6-8378-e76ac463ad7d', 'volume_id': 'dc0f64cb-46da-45e6-8378-e76ac463ad7d', 'host_name': None, 'server_id': 'd83a2a6a-61f6-494a-a67b-3603d1a24291'}], 'created_at': '2015-03-24T13:49:19.000000', 'encrypted': False, 'status': 'in-use', 'volume_type': None, 'size': 48, 'os-vol-tenant-attr:tenant_id': 'f4467a6710f84dc33900393119a128473', 'user_id': 'a03fd08bd81146d4b71d6874e6ba5765', 'id': 'dc0f64cb-46da-45e6-8378-e76ac463ad7d'}

dans mon code je fais ceci:

# num.images() retourne la structure " images"
# num.volumes() retourne la structure " de home et swap"
        data_images = num.images()
        data_volumes = num.volumes()
        for d_i,d_v in zip(data_images,data_volumes):
            if d_i['instance_uuid'] == d_v['attachments'][0]['server_id'] :
                print("{}".format(d_v["name"]))

j'aurai dû avoir en output :

PROD-WBDD-1PPSWAP
PROD-WBDD-1PP
HOME

mais je n'ai rien en output.

quelqu'un peut m'aider su ce coup ?

demandé 29-Jun-2015 par structure de données
edité 29-Jun-2015 par max

Pas sûr de comprendre, tu as plusieurs structures "images" ?
Si c'est ça, une implémentation naïve voudrait que tu ais 2 boucles imbriquées, une sur data_images et l'autre sur data_volumes, non ?

Je ne vois pas comment.
Un exemple ?

1 Réponse

+2 votes
 
Meilleure réponse

C'est résolu

Une boucle imbriquée était bien la bonne solution

Merci

répondu 30-Jun-2015 par anonyme
sélectionné 16-Mai-2016 par Sam

Tu peux développer ta réponse avec un bout de code pour que ça serve au(x) prochain(s).

Et éventuellement accepter ta réponse.

Merci

@max : vu que ce n'est pas un " membre ", pas sûr qu'il puisse accepter "ses" reponses, sinon il pourrait le faire pour tous les anonymes.
donc t'as plus qu'à la lui valider ;)

...