在Python中设置多行字典的正确方法是什么?

在Python中,我想在我的代码中编写一个多行字典。 有几种方法可以将其格式化。 这里有一些我能想到的:

  1. mydict = { "key1": 1, "key2": 2, "key3": 3, } 
  2.  mydict = { "key1": 1, "key2": 2, "key3": 3, } 
  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'), ], } 

同样,这里是我的首选方式,包括大string,而不引入任何空白(如果你使用三引号多行string,你会得到):

 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 (ie 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() 

由于您的密钥是string,并且由于我们正在讨论可读性,所以我更喜欢:

 mydict = dict( key1 = 1, key2 = 2, key3 = 3, ) 

通常情况下,如果你有大的python对象,很难对它们进行格式化。 我个人更喜欢使用一些工具。

这里是python美化 – http://www.cleancss.com/python-beautify即刻把你的数据转换成可定制的风格。;

从我的教程经验来看,其他的东西总是看起来比较喜欢,但这比其他任何东西都更适合个人喜好。

一般来说,在最终input之后你不会包含逗号,但是Python会为你纠正这个问题。