Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 4, 2017 19:03:12

Lena13_08
Зарегистрирован: 2017-10-14
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Собрать все значения которые присутствуют в других словарях

У меня есть лист словарей(каждый раз номер этих словерей меняеться так как я нахожу их по ключу)
в такой форме:

 list({a:[ ['one':1] , ['two':1], ['three':2] ]} , {b:[ ['one':1] , ['four':1], ['five':2] ]})
мне нужно чтобы мне возвращало в этом примере:
'one'

Спасибо


Офлайн

#2 Дек. 4, 2017 19:37:09

Slow
Зарегистрирован: 2017-07-26
Сообщения: 88
Репутация: +  4  -
Профиль   Отправить e-mail  

Собрать все значения которые присутствуют в других словарях

Я честно прочитал написанное трижды. Трижды я честно пытался понять. Трижды у меня не вышло. Попробуйте переформулировать, что ли…

Офлайн

#3 Дек. 4, 2017 20:49:14

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Собрать все значения которые присутствуют в других словарях

Slow
Я честно прочитал написанное трижды.
Lena13_08
У меня есть лист словарей
А чего тут читать.
 >>> list({a:[ ['one':1] , ['two':1], ['three':2] ]} , {b:[ ['one':1] , ['four':1], ['five':2] ]})
Traceback (most recent call last):
  File "C:\comp\Python35\lib\code.py", line 64, in runsource
    code = self.compile(source, filename, symbol)
  File "C:\comp\Python35\lib\codeop.py", line 168, in __call__
    return _maybe_compile(self.compiler, source, filename, symbol)
  File "C:\comp\Python35\lib\codeop.py", line 99, in _maybe_compile
    raise err1
  File "C:\comp\Python35\lib\codeop.py", line 87, in _maybe_compile
    code1 = compiler(source + "\n", filename, symbol)
  File "C:\comp\Python35\lib\codeop.py", line 133, in __call__
    codeob = compile(source, filename, symbol, self.flags, 1)
  File "<interactive input>", line 1
    list({a:[ ['one':1] , ['two':1], ['three':2] ]} , {b:[ ['one':1] , ['four':1], ['five':2] ]})
                    ^
SyntaxError: invalid syntax



Офлайн

#4 Дек. 4, 2017 20:50:49

Lena13_08
Зарегистрирован: 2017-10-14
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Собрать все значения которые присутствуют в других словарях

Slow
Я честно прочитал написанное трижды. Трижды я честно пытался понять. Трижды у меня не вышло. Попробуйте переформулировать, что ли…
Я обьясню главную проблему так будет легче понять:
Я делаю поисковик для документов.
У меня есть индекс который предоставляет собой коллекцию словарей для каждого слова :
 {'term': [document_id, term_frequency], [document_id, term_frequency]......}
где: document_id это номер документа в котором присутствует слово term, и term_frequency — сколько раз в этом документе присутствует слово.
Значит я задаю вопрос программа уже делает сплит и чистит фразы, находит все словари(тоисть для каждого слова в вопросе) количество зависит от количества слов в моём вопросе
Так вот я их этого результата хочу взять только те документы которые имеюют ВСЕ слова из моего запроса.
Я запуталась в словарях

Отредактировано Lena13_08 (Дек. 4, 2017 20:52:04)

Офлайн

#5 Дек. 4, 2017 21:39:30

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Собрать все значения которые присутствуют в других словарях

имхо списки тут лишние

 d = {}
d['term1'] =  {'id1':1,'id2':2,'id3':3}
d['term2'] = {'id1':2,'id2':4,'id3':5}
d['term3'] = {'id2':2,'id3':4,'id4':5}
s = set(d['term1'].keys()) & set(d['term2'].keys()) & set(d['term3'].keys())
print(s)
>>> 
{'id3', 'id2'}

Отредактировано vic57 (Дек. 4, 2017 21:52:07)

Офлайн

#6 Дек. 4, 2017 22:08:06

Lena13_08
Зарегистрирован: 2017-10-14
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Собрать все значения которые присутствуют в других словарях

vic57
имхо списки тут лишние
Спасибо , но это не подойдёт, индекс построен в том виде как я написала, я не могу его изменить

Офлайн

#7 Дек. 4, 2017 22:14:05

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Собрать все значения которые присутствуют в других словарях

так как вы написали работать не будет

 >>> d = {'term': [document_id, term_frequency], [document_id, term_frequency]}
SyntaxError: invalid syntax
>>> 
разве что
 >>> d={}
>>> d['t1'] = [['id1',1],['id2',2],['id3',3]]
>>> d['t2'] = [['id1',1],['id2',1],['id3',1]]
>>> d['t3'] = [['id1',1],['id2',1],['id4',1]]
>>> l1 = [i[0] for i in d['t1']]
>>> l2 = [i[0] for i in d['t2']]
>>> l3 = [i[0] for i in d['t3']]
>>> set(l1) & set(l2) & set(l3)
{'id1', 'id2'}

Отредактировано vic57 (Дек. 4, 2017 22:31:10)

Офлайн

#8 Дек. 4, 2017 22:53:09

Lena13_08
Зарегистрирован: 2017-10-14
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Собрать все значения которые присутствуют в других словарях

Я думаю что можно, вот смотри у меня есть идея:
Например я запрашиваю ‘ term1, term2’
Сначала я выбираю все словари из индекса с term 1 и term2. Потом я беру все doc_id у словаря term1 и ищу их у словаря для term2. Может так получиться?

 for i in словари:
      for k,v in словарь.items():
            for j in v:
                  if j[0] in i:
                      print j
Что то вроде такого но я не знаю как сказать чтобы j встречался в каждом i

Офлайн

#9 Дек. 5, 2017 04:56:54

papuas
Зарегистрирован: 2015-06-19
Сообщения: 159
Репутация: +  6  -
Профиль   Отправить e-mail  

Собрать все значения которые присутствуют в других словарях

Lena13_08
У меня есть лист словарей(каждый раз номер этих словерей меняеться так как я нахожу их по ключу)
в такой форме:
 list({a:[ ['one':1] , ['two':1], ['three':2] ]} , {b:[ ['one':1] , ['four':1], ['five':2] ]})
Так вот как это оказывается правильно называется - “лист словарей”
Согласен с vic57, списки не нужны.
http://python.su/forum/topic/34124/

Надеюсь это вам поможет:
https://habrahabr.ru/post/319876/

Отредактировано papuas (Дек. 5, 2017 05:02:09)

Офлайн

#10 Дек. 5, 2017 08:57:50

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Собрать все значения которые присутствуют в других словарях

papuas
Так вот как это оказывается правильно называется - “лист словарей”
Папуас это никак не называется. Вам два раза написали что это синтаксически недопустимая конструкция.
Lena13_08
Спасибо , но это не подойдёт, индекс построен в том виде как я написала, я не могу его изменить
Учитывая что конструкция невозможная в питоне а ТС не желает ее менять то остается только сидеть и ждать когда язык изменят так чтобы он подходил для ее целей.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version