Я хочу, чтобы уникальные повторяющиеся значения в dict. Это выглядит так:
d = {
"a":1,
"b":2,
"c":2,
"d":3,
"e":4,
"f":5,
"g":1,
"h":2,
"i":2,
"j":1,
"k":1}
Вот что я сделал:
# sort and unique the dict values
obj = d.values()
K = []
K = sorted(list(zip(*[(x,K.append(x)) for x in obj if not x in K])[0]
V=[]
for v1 in L:
V.append([k for k, v in obj.iteritems() if v == v1][0])
d_out = dict(zip(K, V))
1.
Итак, K, V будет в правильном порядке?
Кроме того, это может быть немного сложным, может кто-нибудь дать простое решение для уникального диктанта по его значениям?
2.
Может ли следующее быть более простым?
for v1 in L:
V.append([k for k, v in obj.iteritems() if v == v1][0])
Это не работает в моем тестировании:
[V.append([k for k, v in obj.iteritems() if v == v1][0]) for v1 in L]
3.
Я понял, что могу использовать значение ключа подкачки для достижения этого (уникальное значение по его значению), но я понятия не имею, как выбрать ключ, когда подкачка вызвала конфликт ключей с этим:
dict((value, key) for key, value in my_dict.iteritems())
Я знаю, если поменять его местами значение будет уникальным, однако это просто перезаписывает ключ при возникновении конфликта клавиш, не давая возможности сделать выбор. Я смущен, почему это не дает ключевой ошибки конфликта? И можно ли что-то сделать, чтобы выбрать ключ рядом с безобразным способом перезаписать ключ нового диктанта позже?
4.
Я искал и нашел некоторые "None" значения для python dict, которые хорошо обсуждались, любой может дать мне пример того, для чего он используется и на что это повлияет при использовании python dict?