2

キーが食物網の捕食者の名前で、値が捕食者が食べる獲物のリストである辞書をフォーマットしようとしています。全体を印刷することはできますが、印刷される餌のリストはすべてコンマで区切られています。最後のコンマがコンマではなく、「and」という単語になるようにフォーマットしたいと思います。

これは私が持っているものです.dは私の辞書です:

for key in d:
        print(key, "eats", ', '.join(map(str,d[key])))

たとえば、次のように出力されます。

Lobster eats mussels, limpets, whelk

最後のコンマを「and」に置き換えたいと思います。コンマのインデックスを見つける必要があることはわかっています。それは次の方法で行われます。

pos=str(d[key]).rfind(",")

ここからどうやって終わらせればいいのかわからない。

助言がありますか?

ありがとうございました

4

4 に答える 4

4

あなたの例preyでは、コンマが含まれていると問題が発生する可能性がありますが、それは可能ですか?

私は提案します:

for predator, prey in d.items():
    print '%s eats %s and %s' % (predator, ', '.join(prey[:-1]), prey[-1])

for predator, prey in d.items()すべてのキーと値のペアをループします。

', '.join(prey[:-1])最後の獲物を除くすべてを取り、コンマでそれらを結合します

prey[-1]次に最後の獲物を追加します

それぞれ%sは、行末のタプルの値に置き換えられます

于 2012-12-06T16:52:49.443 に答える
1

多分このような何か?

def add_and(s):                                
   before, after = s.rsplit(', ', 1)
   return before + ', and ' + after

>>> add_and('Lobster eats mussels, limpets, whelk')
'Lobster eats mussels, limpets, and whelk'
于 2012-12-06T16:52:45.837 に答える
1

これを試して:

for key in d:
  l = d[key]
  print ', '.join(l[:-1]) + ' and ' + str(l[-1])
于 2012-12-06T16:52:52.487 に答える
0

私は場合にこれを使用しますlen(preys) <= 1

for predator, preys in d.items():
    print '{0} eats {1}'.format(  predator,
                                  ', '.join(preys[:-1]) + \
                                  " and " + preys[-1] if len(preys) > 1 else preys[-1],
                                  )
于 2012-12-06T17:52:29.823 に答える