Seite 1 von 1

Doppelte Elemente aus Dictionary mit listen als Value aussortieren

Verfasst: Montag 25. November 2019, 20:09
von Fire Spike
Hallo ich habe mir per Zufall ein Dictionary mit einem Zeichen als Schlüssel und zufälligen RGB Werten generieren lassen.
Wie kann ich jetzt am einfachsten schauen ob ein RGB Wert doppelt vorkommt?
Ich hatte die Idee die Listen in ein Set zu packen, aber das geht ja nicht😵
Das ist das Dictionary:

Code: Alles auswählen

{"a": [86, 210, 158], "b": [37, 140, 23], "c": [138, 16, 211], "d": [199, 36, 16], "e": [168, 40, 196], "f": [114, 237, 186], "g": [94, 146, 147], "h": [242, 87, 253], "i": [52, 9, 192], "j": [176, 23, 93], "k": [217, 248, 144], "l": [162, 111, 83], "m": [130, 186, 166], "n": [241, 88, 254], "o": [139, 58, 216], "p": [243, 80, 151], "q": [60, 12, 243], "r": [83, 127, 88], "s": [147, 113, 118], "t": [57, 227, 1], "u": [221, 55, 160], "v": [247, 145, 80], "w": [113, 183, 245], "x": [171, 44, 192], "y": [10, 243, 128], "z": [86, 98, 254], "A": [125, 154, 204], "B": [200, 167, 231], "C": [72, 59, 200], "D": [70, 40, 251], "E": [145, 216, 239], "F": [83, 244, 150], "G": [22, 8, 100], "H": [131, 222, 67], "I": [220, 39, 54], "J": [60, 105, 241], "K": [245, 199, 217], "L": [171, 107, 112], "M": [20, 53, 163], "N": [106, 143, 125], "O": [150, 107, 143], "P": [11, 229, 148], "Q": [24, 68, 10], "R": [10, 89, 183], "S": [14, 120, 179], "T": [165, 142, 207], "U": [22, 110, 126], "V": [113, 209, 59], "W": [97, 247, 240], "X": [77, 141, 214], "Y": [252, 76, 234], "Z": [112, 178, 239], "0": [175, 221, 64], "1": [218, 17, 17], "2": [101, 10, 169], "3": [78, 36, 157], "4": [13, 65, 65], "5": [53, 74, 38], "6": [58, 229, 246], "7": [78, 143, 237], "8": [242, 169, 185], "9": [157, 135, 174], "!": [204, 253, 180], "\"": [19, 53, 178], "#": [211, 128, 147], "$": [224, 135, 219], "%": [143, 157, 146], "&": [4, 230, 78], "'": [63, 6, 226], "(": [84, 3, 157], ")": [232, 204, 249], "*": [52, 101, 113], "+": [50, 50, 2], ",": [197, 155, 254], "-": [205, 220, 146], ".": [71, 239, 219], "/": [72, 126, 99], ":": [74, 211, 147], ";": [149, 170, 140], "<": [249, 90, 84], "=": [94, 63, 137], ">": [151, 170, 6], "?": [254, 112, 232], "@": [51, 185, 164], "[": [25, 178, 115], "\\": [169, 196, 174], "]": [133, 228, 101], "^": [30, 138, 142], "_": [181, 248, 155], "`": [167, 19, 227], "{": [226, 111, 125], "|": [90, 68, 34], "}": [238, 74, 201], "~": [113, 244, 45]}

Re: Doppelte Elemente aus Dictionary mit listen als Value aussortieren

Verfasst: Montag 25. November 2019, 20:13
von Sirius3
Bei einem Set wirst Du auch keine Doppelten Einträge finden, weil ja jeder Key einzigartig ist.
Du kannst aber die Values als Tuple in ein Set packen.

Re: Doppelte Elemente aus Dictionary mit listen als Value aussortieren

Verfasst: Montag 25. November 2019, 20:38
von Fire Spike
Ok aber wieso gibt es einen Fehler?

Code: Alles auswählen

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Json Datei

Code: Alles auswählen

{"a": [95, 250, 200], "b": [18, 139, 158], "c": [194, 147, 94], "d": [108, 1, 242], "e": [186, 127, 130], "f": [47, 3, 5], "g": [140, 120, 222], "h": [162, 70, 192], "i": [82, 164, 106], "j": [19, 204, 48], "k": [19, 202, 172], "l": [201, 10, 151], "m": [30, 160, 185], "n": [49, 75, 120], "o": [22, 113, 236], "p": [60, 234, 231], "q": [43, 234, 170], "r": [243, 180, 86], "s": [50, 65, 49], "t": [251, 71, 103], "u": [10, 20, 191], "v": [140, 220, 242], "w": [153, 202, 66], "x": [212, 176, 30], "y": [84, 64, 161], "z": [179, 2, 58], "A": [152, 193, 13], "B": [240, 196, 237], "C": [214, 189, 33], "D": [33, 133, 74], "E": [121, 127, 213], "F": [106, 139, 220], "G": [232, 32, 211], "H": [128, 99, 161], "I": [204, 16, 173], "J": [236, 115, 175], "K": [103, 40, 178], "L": [170, 249, 217], "M": [199, 161, 144], "N": [147, 36, 14], "O": [132, 154, 232], "P": [29, 46, 203], "Q": [140, 54, 208], "R": [189, 15, 236], "S": [68, 10, 230], "T": [35, 69, 160], "U": [196, 165, 101], "V": [148, 214, 13], "W": [214, 14, 4], "X": [140, 187, 189], "Y": [221, 46, 70], "Z": [137, 93, 128], "0": [12, 200, 57], "1": [212, 95, 135], "2": [139, 104, 26], "3": [88, 222, 80], "4": [236, 18, 5], "5": [233, 245, 3], "6": [244, 244, 213], "7": [147, 216, 28], "8": [115, 202, 202], "9": [163, 60, 234], "!": [144, 83, 219], "\"": [83, 37, 224], "#": [173, 102, 21], "$": [120, 206, 220], "%": [18, 16, 118], "&": [63, 88, 75], "'": [50, 2, 88], "(": [55, 59, 146], ")": [96, 238, 254], "*": [198, 153, 146], "+": [69, 68, 103], ",": [185, 221, 106], "-": [170, 55, 153], ".": [227, 143, 157], "/": [53, 174, 238], ":": [104, 226, 110], ";": [233, 210, 245], "<": [124, 26, 93], "=": [112, 40, 201], ">": [196, 152, 59], "?": [140, 246, 40], "@": [51, 26, 29], "[": [115, 156, 237], "\\": [29, 33, 150], "]": [23, 189, 88], "^": [151, 179, 235], "_": [158, 251, 45], "`": [82, 134, 84], "{": [163, 173, 19], "|": [186, 34, 70], "}": [172, 4, 213], "~": [86, 239, 85]}
Code

Code: Alles auswählen

def zgü():
    s = set()
    with open("aaa") as f:
        for i in json.load(f).values():
            s.add(tuple(i))
        if len(json.load(f).values()) != len(s):
            print("doppelte werte")
    print(s)

Re: Doppelte Elemente aus Dictionary mit listen als Value aussortieren

Verfasst: Montag 25. November 2019, 20:53
von __blackjack__
@Fire Spike: Wenn Du etwas aus einer offenen Datei liest, dann ist danach der Dateizeiger hinter den gelesenen Daten. Die kann man also nicht einfach wieder lesen ohne den Dateizeiger wieder an den Anfang der Daten zu setzen. Wobei es aber sowieso nicht wirklich schlau ist die Datei zwei mal zu lesen wenn man das auch *einmal* machen könnte.