簡體   English   中英

Python列表索引理解

[英]Python List Index Comprehension

我有一個返回不同長度和結構的列表的類。 示例輸出為:

['Lead Attorneys', 'Defendant', 'Creighton, David Walter', '3661 Braeden Ct', 'Middleburg, FL 32068', 'Defendant', 'Creighton, Mary Lynette', '3661 Braeden Ct', 'Middleburg, FL 32068', 'Defendant', 'Unknown Spouse', 'ConvUnknown', 'Defendant', 'Unknown Tenant #1', 'ConvUnknown', 'Plaintiff', 'PNC Bank National Association', 'Josh D Donnelly', 'Retained', '', '813-915-8660(W)', '813-915-0559(F)', 'AttorneyNotice@Consuegralaw.com']

我想按被告一詞之間的索引對該列表進行切片。 我可以通過以下方式確定每次被告的位置:

      i = -1
      try:
         while 1:
            i = partyinfo.index('Defendant', i+1)
            print "match at", i
      except ValueError:
         pass

哪個輸出“被告”位於位置1、5、9、12。我想將每次出現之間的位置連接起來。 由於這些發生在1,5,9和12,因此我需要對partyinfo進行切片,實質上是:

defendant += partyinfo[i+1: to the next occurence of i-1 and append to a new value for storage.

我無法理解我的一生如何做到這一點,這似乎很簡單。 任何幫助,將不勝感激。

預期的輸出將是:

'Creighton, David Walter', '3661 Braeden Ct', 'Middleburg, FL 32068', 'Creighton, Mary Lynette', '3661 Braeden Ct', 'Middleburg, FL 32068', 'Unknown Spouse', 'ConvUnknown','Unknown Tenant #1', 'ConvUnknown'
[s for s in partyinfo[partyinfo.index('Defendant'):] if s != 'Defendant']

似乎您想從partyinfo創建一個新列表,從第一次出現'Defendant'然后過濾掉所有'Defendant' 此列表理解查找'Defendant' partyinfo 'Defendant'的第一次出現,從該位置開始獲取partyinfo ,然后過濾掉'Defendant' partyinfo 'Defendant'所有出現。

這有幫助嗎

resultinglist=[]
for i in range(len(indexes)): #indexes being the indexes of defendent
   if i!= len(indexes)-1: #if its not the last index
     resultinglist+=partyinfo[indexes[i]+1:indexes[i+1]] # add the stuff between YAY
>>> L = ['Lead Attorneys', 'Defendant', 'Creighton, David Walter', '3661 Braeden Ct', 'Middleburg, FL 32068', 'Defendant', 'Creighton, Mary Lynette', '3661 Braeden Ct', 'Middleburg, FL 32068', 'Defendant', 'Unknown Spouse', 'ConvUnknown', 'Defendant', 'Unknown Tenant #1', 'ConvUnknown', 'Plaintiff', 'PNC Bank National Association', 'Josh D Donnelly', 'Retained', '', '813-915-8660(W)', '813-915-0559(F)', 'AttorneyNotice@Consuegralaw.com']
>>> from itertools import groupby
>>> [' '.join(g) for k,g in groupby(L, key="Defendant".__ne__) if k]
['Lead Attorneys',
 'Creighton, David Walter 3661 Braeden Ct Middleburg, FL 32068', 
 'Creighton, Mary Lynette 3661 Braeden Ct Middleburg, FL 32068',
 'Unknown Spouse ConvUnknown',
 'Unknown Tenant #1 ConvUnknown Plaintiff PNC Bank National Association Josh D Donnelly Retained  813-915-8660(W) 813-915-0559(F) AttorneyNotice@Consuegralaw.com']

將列表連接成一個字符串,然后分割該字符串:

>>> alist = ['Lead Attorneys', 'Defendant', 'Creighton, David Walter',....]
>>> astr = ''
>>> for i in alist:
...    astr = '%s,%s' % (astr,i)
>>> astr = astr[1:]
>>> astr.split('Defendant')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM