У меня есть словарь по умолчанию. Я прокручиваю много строк и добавляю их в каталог под ключом как число, но только если это значение уже не в словаре. Так что мой код выглядит следующим образом:Добавьте значение, если это значение не существует в словаре
from collections import defaultdict
strings = ["val1", "val2", "val2", "val3"]
my_dict = defaultdict(list)
key = 0
for string in strings:
if string not in my_dict.itervalues():
my_dict[key].append(string)
key += 1
print my_dict
, но, кажется, не работает, потому что все строки добавляются в словарь, например:
defaultdict(<type 'list'>, {0: ['val1'], 1: ['val2'], 2: ['val2'], 3: ['val3']})
«val2» не должны быть добавлены и он должен выглядеть следующим образом:
defaultdict(<type 'list'>, {0: ['val1'], 1: ['val2'], 2: ['val3']})
что я делаю неправильно?
Предлагаю поиграть с простым r примеров. Попробуйте угадать результаты этих выражений: '1 в [1]' и '1 в [[1]] и' [1] в [[1]] '. Если вы можете определить шаблон, вы можете применить это знание к своей реальной проблеме. – Kevin
Я не уверен, чего вы пытаетесь достичь в конце, и почему вы используете defaultdict для этого. Как насчет 'dedup = set (strings)' для удаления дубликатов, затем 'dict (zip (диапазон (len (dedup)), dedup))', чтобы сделать список словарем? – raphv
Спасибо @Kevin, теперь я вижу, как это работает – GohanP