'What is the proper way to format a multi-line dict in Python?
In Python, I want to write a multi-line dict in my code. There are a couple of ways one could format it. Here are a few that I could think of:
mydict = { "key1": 1, "key2": 2, "key3": 3, }mydict = { "key1": 1, "key2": 2, "key3": 3, }mydict = { "key1": 1, "key2": 2, "key3": 3, }
I know that any of the above is syntactically correct, but I assume that there is one preferred indentation and line-break style for Python dicts. What is it?
Note: This is not an issue of syntax. All of the above are (as far as I know) valid Python statements and are equivalent to each other.
Solution 1:[1]
First of all, like Steven Rumbalski said, "PEP8 doesn't address this question", so it is a matter of personal preference.
I would use a similar but not identical format as your format 3. Here is mine, and why.
my_dictionary = { # Don't think dict(...) notation has more readability
"key1": 1, # Indent by one press of TAB (i.e. 4 spaces)
"key2": 2, # Same indentation scale as above
"key3": 3, # Keep this final comma, so that future addition won't show up as 2-lines change in code diff
} # My favorite: SAME indentation AS ABOVE, to emphasize this bracket is still part of the above code block!
the_next_line_of_code() # Otherwise the previous line would look like the begin of this part of code
bad_example = {
"foo": "bar", # Don't do this. Unnecessary indentation wastes screen space
"hello": "world" # Don't do this. Omitting the comma is not good.
} # You see? This line visually "joins" the next line when in a glance
the_next_line_of_code()
btw_this_is_a_function_with_long_name_or_with_lots_of_parameters(
foo='hello world', # So I put one parameter per line
bar=123, # And yeah, this extra comma here is harmless too;
# I bet not many people knew/tried this.
# Oh did I just show you how to write
# multiple-line inline comment here?
# Basically, same indentation forms a natural paragraph.
) # Indentation here. Same idea as the long dict case.
the_next_line_of_code()
# By the way, now you see how I prefer inline comment to document the very line.
# I think this inline style is more compact.
# Otherwise you will need extra blank line to split the comment and its code from others.
some_normal_code()
# hi this function is blah blah
some_code_need_extra_explanation()
some_normal_code()
Solution 2:[2]
Since your keys are strings and since we are talking about readability, I prefer :
mydict = dict(
key1 = 1,
key2 = 2,
key3 = 3
)
Solution 3:[3]
Usually, if you have big python objects it's quite hard to format them. I personally prefer using some tools for that.
Here is python-beautifier - www.cleancss.com/python-beautify that instantly turns your data into customizable style.
Solution 4:[4]
flake8 – a utility for enforcing style consistency in python code, which checks your code syntax and provide instructions to improve it – recommends this format (see https://www.flake8rules.com/rules/E133.html):
mydict = {
"key1": 1,
"key2": 2,
"key3": 3,
}
Solution 5:[5]
From my experience with tutorials, and other things number 2 always seems preferred, but it's a personal preference choice more than anything else.
Solution 6:[6]
dict(rank = int(lst[0]),
grade = str(lst[1]),
channel=str(lst[2])),
videos = float(lst[3].replace(",", " ")),
subscribers = float(lst[4].replace(",", "")),
views = float(lst[5].replace(",", "")))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Brian Tompsett - æ±¤èŽ±æ© |
| Solution 3 | Max |
| Solution 4 | mouwsy |
| Solution 5 | Jake |
| Solution 6 |
