在Python中,我想在代码中编写多行字典。有几种方法可以对其进行格式化。以下是我能想到的一些:
mydict = { "key1": 1,
"key2": 2,
"key3": 3, }
mydict = { "key1": 1,
"key2": 2,
"key3": 3,
}
mydict = {
"key1": 1,
"key2": 2,
"key3": 3,
}
我知道上述任何一种在语法上都是正确的,但我假设 Python 字典有一种首选的缩进和换行样式。它是什么?
注意:这不是语法问题。以上所有内容(据我所知)都是有效的 Python 语句,并且彼此等效。
我用#3。对于长列表、元组等也是如此。它不需要在缩进之外添加任何额外的空格。一如既往,保持一致。
mydict = {
"key1": 1,
"key2": 2,
"key3": 3,
}
mylist = [
(1, 'hello'),
(2, 'world'),
]
nested = {
a: [
(1, 'a'),
(2, 'b'),
],
b: [
(3, 'c'),
(4, 'd'),
],
}
同样,这是我在不引入任何空格的情况下包含大字符串的首选方法(就像使用三引号多行字符串时会得到的那样):
data = (
"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABG"
"l0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEN"
"xBRpFYmctaKCfwrBSCrRLuL3iEW6+EEUG8XvIVjYWNgJdhFjIX"
"rz6pKtPB5e5rmq7tmxk+hqO34e1or0yXTGrj9sXGs1Ib73efh1"
"AAAABJRU5ErkJggg=="
)
首先,就像Steven Rumbalski所说,“PEP8没有解决这个问题”,所以这是个人喜好的问题。
我会使用与您的格式 3 类似但不相同的格式。这是我的格式,以及原因。
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()
因为你的键是字符串,而且我们正在讨论可读性,所以我更喜欢:
mydict = dict(
key1 = 1,
key2 = 2,
key3 = 3
)
flake8 – 一个用于在 python 代码中强制风格一致性的实用程序,它检查代码语法并提供改进它的说明 – 推荐这种格式(请参阅 https://www.flake8rules.com/rules/E133.html):
mydict = {
"key1": 1,
"key2": 2,
"key3": 3,
}
通常,如果你有大的 python 对象,那么格式化它们是相当困难的。我个人更喜欢使用一些工具来实现这一点。
这里是 python-beautifier - www.cleancss.com/python-beautify 可以立即将您的数据转换为可定制的样式。
根据我在教程和其他方面的经验,第二个似乎总是首选,但这是个人偏好的选择。
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(",", "")))
通常,您不会在最后一个条目后包含逗号,但 Python 会为您纠正这一点。