10

変数を使用して変数をフォーマットするにはどうすればよいですか?

cart = {"pinapple": 1, "towel": 4, "lube": 1}
column_width = max(len(item) for item in items)
for item, qty in cart.items():
    print "{:column_width}: {}".format(item, qty)

> ValueError: Invalid conversion specification

また

(...):
    print "{:"+str(column_width)+"}: {}".format(item, qty)

> ValueError: Single '}' encountered in format string

ただし、私にできることは、最初に書式設定文字列を作成してから、それを書式設定することです。

(...):
    formatter = "{:"+str(column_width)+"}: {}"
    print formatter.format(item, qty)

> lube    : 1
> towel   : 4
> pinapple: 1

しかし、不器用に見えます。このような状況に対処するためのより良い方法はありませんか?

4

2 に答える 2

17

さて、問題はすでに解決されています。今後の参照のための答えは次のとおりです。変数はネストできるため、これは完全に正常に機能します。

for item, qty in cart.items():
    print "{0:{1}} - {2}".format(item, column_width, qty)
于 2012-05-08T12:19:40.233 に答える
0

Python 3.6以降では、 f文字列を使用できるため、より簡潔な実装が可能になります。

>>> things = {"car": 4, "airplane": 1, "house": 2}
>>> width = max(len(thing) for thing in things)
>>> for thing, quantity in things.items():
...     print(f"{thing:{width}} : {quantity}")
... 
car      : 4
airplane : 1
house    : 2
>>> 
于 2020-03-05T09:45:37.710 に答える