python for复杂循环,python:复杂的循环列表

import csv

import collections

def do_work():

(data,counter)=get_file('thefile.csv')

b=samples_subset1(data,counter,'/pythonwork/samples_subset4.csv',500)

medications_subset2(b,['HYDROCODONE','MORPHINE','OXYCODONE'])

def get_file(start_file):

with open(start_file,'rb') as f:

data=list(csv.reader(f))

counter=collections.defaultdict(int)

for row in data:

counter[row[10]]+=1

return (data,counter)

def samples_subset1(data,counter,output_file,sample_cutoff):

with open(output_file,'wb') as outfile:

writer=csv.writer(outfile)

b_counter=0

b=[]

for row in data:

if counter[row[10]]>=sample_cutoff:

b.append(row)

writer.writerow(row)

b_counter+=1

return b

def medications_subset2(b,drug_input):

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']}

...

...

let's say drug_input = 'METHADONE'

i need to be able to go through the b array and delete every row that DOES NOT have ANY ONE of these:

['ALGIDON','ALGOLYSIN','AMIDON','DEPRIDOL','DOLOPHINE','FENADONE',

'METHADOSE','MIADONE','PHENADONE']

for example if b[1] = "yes,no,yes,amidon,blah" then do nothing

but

if b[2] = "yes,yes,yes,vicodin,yes" then DELETE this record

解决方案

I didn't really read your code paragraph, but from the problem you described afterwards it sounds like you want:

needed = set(['ALGIDON','ALGOLYSIN','AMIDON','DEPRIDOL','DOLOPHINE','FENADONE', 'METHADOSE','MIADONE','PHENADONE'])

b = filter(lambda s: len(set(s.upper().split(',')) & needed) > 0, b)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值