2016-04-08 22 views
1

Hallo an alle ich bin ziemlich neu zu Python (so verzeihen Sie mir, wenn dies eine einfache Frage) und Arbeiten an Multiprocessing mit einem K-Means-Algorithmus, aber ich habe ein Problem mit Datenformatierung. Ich habe ein Wörterbuch von Listen als so formatiert:Konvertieren Wörterbuch von Listen zu Wörterbuch von Tupeln

{0: [122.0, 0.000209], 1: [125.0, 0.000419], 2: [127.0, 0.000233], 3: [120.0, 0.000209], 4: [126.0, 0.000336]} 

aber ich brauche es ein Wörterbuch von Tupeln zu sein, so dass es wie folgt aussieht:

{0: (122.0, 0.000209), 1: (125.0, 0.000419), 2: (127.0, 0.000233), 3: (120.0, 0.000209), 4: (126.0, 0.000336)}. 

Ich weiß, dass Sie die Funktion nutzen können

tuple(list) 

, um eine Liste in ein Tupel zu konvertieren, aber ich bin sicher, wie man das Wörterbuch durchläuft und jeden Eintrag in ein Tupel ändert. Hat jemand einen Rat, wie man das macht? Jede Hilfe ist dankbar, danke.

Antwort

4

Die naive Art und Weise:

for key in dictionary: 
    dictionary[key] = tuple(dictionary[key]) 

oder die etwas sauberen aussehende, aber ansonsten völlig identisch Weise:

for key, value in dictionary.iteritems(): 
    dictionary[key] = tuple(value) 

oder die letzte Neufassung als Wörterbuch Verständnis für noch mehr Sauberkeit:

dictionary = {k: tuple(v) for k,v in dictionary.iteritems()} 

sollten alle für diese spezielle Aufgabe ausreichen.

(In Python 3 verwenden dictionary.items() statt iteritems())

+1

Ich weiß nicht, ob die erste Methode ist "naiv." Es ist jedoch "in-place". –

+0

@JaredGoguen Es ist die erste Sache, an die jemand denken könnte, und deshalb habe ich es als naiv bezeichnet. OP spezifiziert keine In-Place-Anforderung. –

+0

Danke, Sir, genau das, was ich brauchte. –