Seite 1 von 1

array sortieren

Verfasst: Mittwoch 12. September 2007, 10:57
von phpogo
Hallo, wie kann ich folgende Liste nach dem Gleichen Element sortieren?

ich habe zum bsp:

['Products\\SMSPlugin', 'Exception\n']
['Products\\SMSPlugin', 'DTMLFile\n']
['Products\\SMSPlugin', 'PageTemplateFile\n']
['Products\\SMSPlugin', 'DEFAULT_READ_PERM, DEFAULT_WRITE_PERM\n']
['Products\\SMSPlugin', 'protect, private\n']
['Products\\SMSPlugin', 'FliwasPlugin\n']
['Products\\SMSPlugin', 'SMS_EMAIL_GATEAWAY_ADDRESS\n']
['Products\\SMSPlugin', 'SMSPlugin\n']
['Products\\PlacelessTranslationService', 'Globals\n']
['Products\\PlacelessTranslationService', 'UserDict\n']
['Products\\PlacelessTranslationService', 'UnicodeType\n']
['Products\\PlacelessTranslationService', 'sys, os\n']
['Products\\PlacelessTranslationService', 'logging\n']
['Products\\PlacelessTranslationService', 'os\n']

wie kann ich alles was zu 'Products\\SMSPlugin' gehört in eine Zeile reihen, dass folgenes erscheint:
['Products\\SMSPlugin', 'Exception, DTMLFile, PageTemapleFile,DEFAULT_READ_Per']
bzw.
['Products\\PlacelessTranslationService', 'Globales,UserDict,UnicodeType, sys]

danke

usw.

Verfasst: Mittwoch 12. September 2007, 11:05
von gerold
Hallo phpogo!

Darf das Ziel auch ein Dictionary sein?

Code: Alles auswählen

>>> my_list = [
... ['Products\\SMSPlugin', 'Exception\n'],
... ['Products\\SMSPlugin', 'DTMLFile\n'],
... ['Products\\SMSPlugin', 'PageTemplateFile\n'],
... ['Products\\SMSPlugin', 'DEFAULT_READ_PERM, DEFAULT_WRITE_PERM\n'],
... ['Products\\SMSPlugin', 'protect, private\n'],
... ['Products\\SMSPlugin', 'FliwasPlugin\n'],
... ['Products\\SMSPlugin', 'SMS_EMAIL_GATEAWAY_ADDRESS\n'],
... ['Products\\SMSPlugin', 'SMSPlugin\n'],
... ['Products\\PlacelessTranslationService', 'Globals\n'],
... ['Products\\PlacelessTranslationService', 'UserDict\n'],
... ['Products\\PlacelessTranslationService', 'UnicodeType\n'],
... ['Products\\PlacelessTranslationService', 'sys, os\n'],
... ['Products\\PlacelessTranslationService', 'logging\n'],
... ['Products\\PlacelessTranslationService', 'os\n'],
... ]
>>> my_dict = {}
>>> for item in my_list:
...     dest = my_dict.setdefault(item[0], [])
...     dest.append(item[1])
...     
>>> my_dict
{'Products\\PlacelessTranslationService': ['Globals\n', 
'UserDict\n', 'UnicodeType\n', 'sys, os\n', 'logging\n', 'os\n'], 
'Products\\SMSPlugin': ['Exception\n', 'DTMLFile\n', 
'PageTemplateFile\n', 'DEFAULT_READ_PERM, DEFAULT_WRITE_PERM\n', 
'protect, private\n', 'FliwasPlugin\n', 
'SMS_EMAIL_GATEAWAY_ADDRESS\n', 'SMSPlugin\n']}
>>> 
mfg
Gerold
:-)

Verfasst: Mittwoch 12. September 2007, 11:20
von phpogo
hi danke man, das funzt ja echt perfekt, wie kann ich jetzt noch die ausgebe machen?

zum beispiel:

-> Products\\SMSPlugin:

- Exception
- DTMLFile
- PageTemplateFile

-> Products\\PlacelessTranslationService:

- Globales
- UserDict

usw.
Wäre super nett.

Verfasst: Donnerstag 13. September 2007, 16:14
von helduel
Moin,

du iterierst über die Schlüssel im dict und bei jedem Schlüssel über die zugeordnete Liste.

Gruß,
Manuel

Verfasst: Donnerstag 13. September 2007, 16:30
von Michael Schneider
Hi,

Code: Alles auswählen

for sK, lV in my_dict.iteritems():
    print "-> %s:\n- %s\n" % (sK, "\n- ".join(lV))
Gruß,
Michel