[Python-ideas] Have a "j" format option for lists

Ken Kundert python-ideas at shalmirane.com
Wed May 9 21:22:56 EDT 2018


Facundo,
    I think this is the beginning of a great feature. And it fills a hole in the 
current string formatting. Specifically, we can carefully control the formatting 
of the base data types, but not collections.

I would like to see you flesh out the idea. In particular, I'd like to see you 
address cases where:
1. The underlying members in the collection are not strings. Besides the basic 
   types such as numbers, it would also be nice to be able to apply formats 
   recursively so that one can construct a string using the attributes of 
   members that are objects or items or other collections.
2. The ability to handle collections other than simple lists or iterables, such 
   as dictionaries.

-Ken


On Wed, May 09, 2018 at 09:39:08AM -0300, Facundo Batista wrote:
> This way, I could do:
> 
> >>> authors = ["John", "Mary", "Estela"]
> >>> "Authors: {:, j}".format(authors)
> 'Authors: John, Mary, Estela'
> 
> In this case the join can be made in the format yes, but this proposal
> would be very useful when the info to format comes inside a structure
> together with other stuff, like...
> 
> >>> info = {
> ...   'title': "A book",
> ...   'price': Decimal("2.34"),
> ...   'authors: ["John", "Mary", "Estela"],
> ... }
> ...
> >>> print("{title!r} (${price}) by {authors:, j}".format(**info))
> "A book" ($2.34) by John, Mary, Estela
> 
> What do you think?
> 
> -- .    Facundo


More information about the Python-ideas mailing list