私はリストをループしようとしていますが、同時に私が比較できるようにする前に項目を参照しています。私のList1タプルを通して私がループしたいリストの前の項目を参照するPython
list1=[(1,'a','hii'),(2,'a','byee'),(3,'a','yoo'),(4,'b','laa'),(5,'a','mehh')]
なタプルの第二の値は、前の組の2番目の値と同じ値である場合に(両方=:
は、これは私のコードです= 'a')、タプルの3番目の項目を連結します。私はをしたい
出力:
list2=[('a','hii,byee,yoo'),('b','laa'),('a','mehh')]
私はを試してみました何:
for item in list1:
for item2 in list2:
if item[0]==(item2[0]-1) and item[1]==item2[1]:
print item[2]+','+item2[2]
elif item[0] != item2[0]-1:
continue
elif item[0]==(item2[0]-1) and item[1] != item2[1]:
print item[2]
間違った出力
hii,byee
byee,yoo
yoo
laa
最初の2つの出力から、ループは前の値だけを見ているが、2つ以上の前の値は見ていないようです。それゆえ、それは一緒に2つの単語を結合し、3つではありませんでした。また、出力には繰り返しがあります。
どうすればこの問題を回避できますか?
ドゥ実際には隣接するタプルをマージしたいだけですか?つまり、最初の3つはすべてマージされますが、最後のものは「mehh」と一緒にリストの先頭からマージされません。 – Blckknght
これは隣接していなければならず、タプルの2番目の値は同じでなければなりません(== 'a'または他の値の両方)。タプルの最初の項目は前の項目より1大きくなければなりません。要件を満たしていれば、最初は3回、最初は「n回」とする。また、私のリストはすでにタプルの最初の値でソートされています。 – jxn