Ответ 1
Я сделаю снимок:
OrderedDict - словари, в которых хранятся ключи, чтобы они были добавлены. Нормальных словарей нет. Если вы посмотрите документ fromkeys
, вы найдете:
OD.fromkeys(S [, v]) → Новый упорядоченный словарь с ключами из S.
Таким образом, метод класса fromkeys
создает OrderedDict
, используя элементы во входном итерабельном S (в моих примерах символов из строки) в качестве ключей. В словаре ключи уникальны, поэтому повторяющиеся элементы в S
игнорируются.
Например:
s = "abbcdece" # example string with duplicate characters
print(OrderedDict.fromkeys(s))
В результате получается OrderedDict:
OrderedDict([('a', None), ('b', None), ('c', None), ('d', None), ('e', None)])
Затем " ".join(some_iterable)
принимает итерабельность и соединяет ее элементы, используя пробел в этом случае. Он использует только ключи, так как итерация через словарь осуществляется его клавишами. Например:
for k in OrderedDict.fromkeys(s): # k is a key of the OrderedDict
print(k)
Результаты в:
a
b
c
d
e
Затем вызовите join:
print(" ".join(OrderedDict.fromkeys(s)))
распечатает:
a b c d e
Использование set
Иногда люди используют набор для этого:
print( " ".join(set(s)))
# c a b d e
Но в отличие от наборов в С++, наборы в python не гарантируют порядок. Таким образом, использование набора даст вам уникальные значения легко, но они могут быть в другом порядке, тогда они находятся в исходном списке или строке (как в приведенном выше примере).
Надеюсь, это немного поможет.