Python-дағы multiline dict пішімдеудің дұрыс жолы қандай?

Питонда менің кодымда көпөлшемді дикту жазғым келеді. Оны пішімдеудің бірнеше жолы бар. Міне, төмендегілер туралы ойланған:

  •  mydict = { "key1": 1, "key2": 2, "key3": 3, } 
  •  mydict = { "key1": 1, "key2": 2, "key3": 3, } 
  •  mydict = { "key1": 1, "key2": 2, "key3": 3, } 

Жоғарыда айтылғандардың синтаксистік түрде дұрыс екендігін білемін, бірақ Python dicts үшін бір қолайлы шегініс және жол үзілімінің стилі бар деп есептеймін. Мынау не?

Ескерту Бұл синтаксистік мәселе емес. Жоғарыда айтылғанның бәрі (менің білуімше) Python мәлімдемелері болып табылады және бір-біріне тең.

116
17 июня '11 в 18:35 2011-06-17 18:35 Райан Томпсон 17 маусым күні сағат 18: 35-де 2011-06-17 18:35
@ 6 жауаптар

Мен # 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==" ) 
148
17 июня '11 в 18:39 2011-06-17 18:39 жауап FogleBird 17 маусым '18 сағат 18:39 2011-06-17 18:39

Ең алдымен, Стивен Румбальскийдің айтуынша, «PEP8 бұл мәселені шешпейді», сондықтан жеке басымдылық мәселесі.

Мен сіздің пішіміңіз сияқты ұқсас, бірақ ұқсас пішімді қолданатын болар еді. 3. Міне, мен және неге.

border=0
 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() 
20
07 дек. жауап RayLuo 07 желтоқсан 2012-12-07 13:36 '12 at 13:36 2012-12-07 13:36

Сіздің кілттеріңіз сызықтар болғандықтан, және біз оқылатындығымыз туралы айтып жатқандықтан, мен:

 mydict = dict( key1 = 1, key2 = 2, key3 = 3, ) 
9
17 июня '11 в 20:40 2011-06-17 20:40 жауап 17 маусымда сағат 20: 40-да басталады. 2011-06-17 20:40

Әдетте, сізде үлкен python нысандары болса, оларды пішімдеу өте қиын. Мен бұл үшін жеке құралдарды пайдаланғым келеді.

Міне, python-beautifier - www.cleancss.com/python-beautify , сіздің деректеріңізді дереу өзгерте алатын стильге айналдырады.

0
12 окт. жауап 12 айға дейін беріледі. 2016-10-12 19:28 '16 сағат 19:28 2016-10-12 19:28

Менің оқулықтарым мен басқа да заттарымнан бастап, 2 нөмір әрдайым қолайлы болып көрінеді, бірақ бұл артықшылықтардың жеке таңдауы.

-2
17 июня '11 в 18:39 2011-06-17 18:39 Джейк 17 маусым күні сағат 18: 39-да жауап береді 2011-06-17 18:39

Әдетте, сіз соңғы енгізілгеннен кейін үтірді қосасыз, бірақ Python оны сіз үшін түзетеді.

-6
17 июня '11 в 22:26 2011-06-17 22:26 Джо 17 маусымда сағат 11: 30-да жауап береді. 2011-06-17 22:26