2010-07-28 6 views
0

j'ai une liste comme ceci:python: itérer tableau

brand_names={'MORPHINE':['ASTRAMORPH','AVINZA','CONTIN','DURAMORPH','INFUMORPH', 
        'KADIAN','MS CONTIN','MSER','MSIR','ORAMORPH', 
        'ORAMORPH SR','ROXANOL','ROXANOL 100'], 
     'OXYCODONE':['COMBUNOX','DIHYDRONE','DINARCON','ENDOCET','ENDODAN', 
         'EUBINE','EUCODAL','EUKODAL','EUTAGEN','OXYCODONE WITH ACETAMINOPHEN CAPSULES', 
         'OXYCODONE WITH ASPIRIN,','OXYCONTIN','OXYDOSE','OXYFAST','OXYIR', 
         'PANCODINE','PERCOCET','PERCODAN','PROLADONE','ROXICET', 
         'ROXICODONE','ROXIPRIM','ROXIPRIN','TECODIN','TEKODIN', 
         'THECODIN','THEKOKIN','TYLOX'], 
     'OXYMORPHONE':['NUMORPHAN','OPANA','OPANA ER'], 
     'METHADONE':['ALGIDON','ALGOLYSIN','AMIDON','DEPRIDOL','DOLOPHINE','FENADONE', 
         'METHADOSE','MIADONE','PHENADONE'], 
     'BUPRENORPHINE':['BUPRENEX','LEPTAN','SUBOXONE','SUBUTEX','TEMGESIC'], 
     'HYDROMORPHONE':['DILAUDID','HYDAL','HYDROMORFAN','HYDROMORPHAN','HYDROSTAT', 
          'HYMORPHAN','LAUDICON','NOVOLAUDON','OPIDOL','PALLADONE', 
          'PALLADONE IR','PALLADONE SR'], 
     'CODEINE':['ACETAMINOPHEN WITH CODEINE','ASPIRIN WITH CODEINE','EMPIRIN WITH CODEINE', 
        'FLORINAL WITH CODEINE','TYLENOL 3','TYLENOL 4','TYLENOL 5'] 
     'HYDROCODONE':['ANEXSIA','BEKADID','CO-GESIC','CODAL-DH','CODICLEAR-DH', 
         'CODIMAL-DH','CODINOVO','CONATUSSIN-DC','CYNDAL-HD','CYTUSS-HC', 
         'DETUSSIN','DICODID','DUODIN','DURATUSS-HD','ENDAL-HC','ENTUSS', 
         'ENTUSS-D','G-TUSS','HISTINEX-D','HISTINEX-HC','HISTUSSIN-D','HISTUSSIN-HC', 
         'HYCET','HYCODAN','HYCOMINE','HYDROCODONE/APAP','HYDROKON', 
         'HYDROMET','HYDROVO','KOLIKODOL','LORCET','LORTAB', 
         'MERCODINONE','NOROCO','NORGAN','NOVAHISTEX','ORTHOXYCOL', 
         'POLYGESIC','STAGESIC','SYMTAN','SYNKONIN','TUSSIONEX','VICODIN', 
         'VICOPROFEN','XODOL','ZYDONE']} 

je voudrais savoir si quoi que ce soit dans brand_names['OXYCODONE':] ou brand_names['HYDROCODONE:] some_value ==

quelque chose comme ça ??

for brand in brand_names['OXYCODONE','HYDROCODONE']: 
    if brand = some_value: 
    append to arrayC 
+2

Ce n'est pas une liste - c'est un dictionnaire. –

+2

19 Python CSV questions dans le dernier jour, peut-être lire les docs un peu? – katrielalex

+3

Ce n'est même pas une question au format CSV. –

Répondre

1
if any(some_value in brand_names[key] for key in ('OXYCODONE','HYDROCODONE')): 
    append to arrayC 
2
for brand in ['OXYCODONE','HYDROCODONE']: 
    if some_value in brand_names[brand]: 
     print brand 
2

Au lieu d'écrire une boucle et annexant à une liste, vous pouvez plutôt écrire comme une compréhension de la liste:

somevalue = 'EUKODAL' 
result = [brand_name for brand_name in ['OXYCODONE', 'HYDROCODONE'] 
      if somevalue in brand_names[brand_name]] 
print result 

Résultat:

 
['OXYCODONE'] 
0

Pas besoin de boucle, vous pouvez simplement faire:

'some_value' in brand_names['OXYCODONE'] + brand_names['HYDROCODONE'] 
0

Voici une réponse si vous avez besoin de beaucoup. Ensuite, il est utile de construire une fois un dictionnaire de recherche que vous pouvez utiliser pour un accès immédiat à la recherche inversée.

brand_names={'MORPHINE':['ASTRAMORPH','AVINZA','CONTIN','DURAMORPH','INFUMORPH', 
        'KADIAN','MS CONTIN','MSER','MSIR','ORAMORPH', 
        'ORAMORPH SR','ROXANOL','ROXANOL 100'], 
     'OXYCODONE':['COMBUNOX','DIHYDRONE','DINARCON','ENDOCET','ENDODAN', 
         'EUBINE','EUCODAL','EUKODAL','EUTAGEN','OXYCODONE WITH ACETAMINOPHEN CAPSULES', 
         'OXYCODONE WITH ASPIRIN,','OXYCONTIN','OXYDOSE','OXYFAST','OXYIR', 
         'PANCODINE','PERCOCET','PERCODAN','PROLADONE','ROXICET', 
         'ROXICODONE','ROXIPRIM','ROXIPRIN','TECODIN','TEKODIN', 
         'THECODIN','THEKOKIN','TYLOX'], 
     'OXYMORPHONE':['NUMORPHAN','OPANA','OPANA ER'], 
     'METHADONE':['ALGIDON','ALGOLYSIN','AMIDON','DEPRIDOL','DOLOPHINE','FENADONE', 
         'METHADOSE','MIADONE','PHENADONE'], 
     'BUPRENORPHINE':['BUPRENEX','LEPTAN','SUBOXONE','SUBUTEX','TEMGESIC'], 
     'HYDROMORPHONE':['DILAUDID','HYDAL','HYDROMORFAN','HYDROMORPHAN','HYDROSTAT', 
          'HYMORPHAN','LAUDICON','NOVOLAUDON','OPIDOL','PALLADONE', 
          'PALLADONE IR','PALLADONE SR'], 
     'CODEINE':['ACETAMINOPHEN WITH CODEINE','ASPIRIN WITH CODEINE','EMPIRIN WITH CODEINE', 
        'FLORINAL WITH CODEINE','TYLENOL 3','TYLENOL 4','TYLENOL 5'], 
     'HYDROCODONE':['ANEXSIA','BEKADID','CO-GESIC','CODAL-DH','CODICLEAR-DH', 
         'CODIMAL-DH','CODINOVO','CONATUSSIN-DC','CYNDAL-HD','CYTUSS-HC', 
         'DETUSSIN','DICODID','DUODIN','DURATUSS-HD','ENDAL-HC','ENTUSS', 
         'ENTUSS-D','G-TUSS','HISTINEX-D','HISTINEX-HC','HISTUSSIN-D','HISTUSSIN-HC', 
         'HYCET','HYCODAN','HYCOMINE','HYDROCODONE/APAP','HYDROKON', 
         'HYDROMET','HYDROVO','KOLIKODOL','LORCET','LORTAB', 
         'MERCODINONE','NOROCO','NORGAN','NOVAHISTEX','ORTHOXYCOL', 
         'POLYGESIC','STAGESIC','SYMTAN','SYNKONIN','TUSSIONEX','VICODIN', 
         'VICOPROFEN','XODOL','ZYDONE']} 

lookup=dict((v,a) for a in brand_names for v in brand_names[a]) 

print ['%s has %s' % (lookup[something],something) 
     for something in ('NOROCO','AMIDON') 
     if (something in lookup and 
      lookup[something] in ('OXYCODONE','HYDROCODONE')) 
     ] 
""" Output: 
['HYDROCODONE has NOROCO'] 
"""