Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to iterate dict in string.format

I read a lot of tutorials, but can not find how to iterate dict in string.format like this:

dict = {'this':'I','is':'am','title':'done'}
print(f'the key is {k for k,v in dict}')
print(f'the val is {v for k,v in dict}')

which I want a result like this:

the key is this is title
the val is I am done

so I can print variable length dict.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

dict = {'this':'I','is':'am','title':'done'}
print(f'the key is {k for k,v in dict}')
print(f'the val is {v for k,v in dict}')

Then I got error.

>Solution :

Currently your output is:

the key is <generator object <genexpr> at 0x7fbaca5443c0>
the val is <generator object <genexpr> at 0x7fbaca5443c0>

That’s because k for k,v in dict is a generator expression. Don’t confuse it with set comprehension, those curly braces are for f-string.

But of course that k for k,v in dict is problematic. When you iterate over a dictionary itself, it gives you keys. So for the first iteration "this" comes back. you can’t unpack "this" into two variables. k, v = "this".

You can use this:

d = {"this": "I", "is": "am", "title": "done"}
print(f'the key is {" ".join(d.keys())}')
print(f'the val is {" ".join(d.values())}')

output:

the key is this is title
the val is I am done

This join works because keys and values are strings in your dictionary. If they are not, you should convert them like:

print(f'the key is {" ".join(map(str, d.values()))}')

For the first one you could also use print(f'the key is {" ".join(d)}') as dictionaries will give keys in the iteration by default.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading