Форум сайта python.su
Lena13_08ну попробуйте и покажите. я даже придумать не могу зачем мне нужен словарь с одним ключом
Я думаю что можно, вот смотри у меня есть идея:
Офлайн
Лена.
Задача понятня.
Спасибо тебе от нуба, за задачку для тренировки….! Полезно! ))
Потратил пару часов - решил!
Т.к. я не совсем разобрался какова точная структура входных данных… - сначала у тебя документ выше уровня слова… а потом ты описываеш, что слово выше документа…. - то я сделал в 2-х варинтах.
Еще, Елена - конструкция, которую ты предоставила сначала - она действительно невозможна…. и она не рабочая… я ее воспринял как принцип, которым ты хочеш передать идею нам… а вот некоторые - восприняли буквально и “насупились”… ))) Пудь пожалуйста впредь точнее… и вставляй проверенный интерпритатором код, чтобы не было 100500 вопросов и ответов…
Вот решение твоей задачи в 2-х вариантах:
CPython 3.4.3
Вариант - слово выше документа:
DataBD={ 'Вася': {'A0001':10,'A0002': 1,'A0003': 0}, 'Петя': {'A0001': 0,'A0002':14,'A0003':111}, 'Николай': {'A0001':15,'A0002': 1,'A0003':111}, 'Оля': {'A0001': 5,'A0002':13,'A0003': 0}, 'Рябоконь':{'A0001': 5,'A0002': 0,'A0003': 0}, } itog={} s=input('вводи уже свои слова сюды (чуствительно к регистру):') s=s.strip() MyWords=s.split() MyWords=list(set(MyWords)) #отсекаем повторяющиеся слова kolWords=len(MyWords) if kolWords==0: print('Слова надо вводить!!! А не тыркать энтер просто так!!!!') else: for cursorWord in MyWords: if cursorWord in DataBD.keys(): for cursorDoc in DataBD[cursorWord].keys(): if DataBD[cursorWord][cursorDoc]>0.001: if cursorDoc in itog: itog[cursorDoc]+=1 else: itog[cursorDoc]=1 else: #если встретилось слово, которого вообще нет в БД, то АЛЕС! Выход и обнуление накопленного итога itog={} break # Выведем результаты... if len(itog)==0: print('Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе! ') else: itogList=[] for cursorItog in itog.keys(): if itog[cursorItog]==kolWords: itogList.append(cursorItog) if len(itogList)>0.001: print('Номера документов, которые содержат ВСЕ слова: ',itogList) else: print('Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе! ')
DataBD={ 'A0001':{'Вася':10,'Петя':0,'Николай':3,'Оля':4}, 'A0002':{'Вася': 0,'Петя':1,'Николай':3,'Оля':0}, 'A0003':{'Вася': 1,'Петя':1,'Николай':3,'Оля':1}, 'A0004':{'Вася': 7,'Петя':0,'Николай':0,'Оля':2}, 'A0005':{'Вася': 1,'Петя':1,'Николай':1,'Оля':0}, } itog={} s=input('вводи уже свои слова сюды (чуствительно к регистру):') s=s.strip() MyWords=s.split() MyWords=list(set(MyWords)) #отсекаем повторяющиеся слова kolWords=len(MyWords) if kolWords==0: print('Слова надо вводить!!! А не тыркать энтер просто так!!!!') else: for cursorWord in MyWords: for cursorDoc in DataBD.keys(): if cursorWord in DataBD[cursorDoc].keys(): if DataBD[cursorDoc][cursorWord]>0.001: if cursorDoc in itog: itog[cursorDoc]+=1 else: itog[cursorDoc]=1 # Выведем результаты... if len(itog)==0: print('Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе! ') else: itogList=[] for cursorItog in itog.keys(): if itog[cursorItog]==kolWords: itogList.append(cursorItog) if len(itogList)>0.001: print('Номера документов, которые содержат ВСЕ слова: ',itogList) else: print('Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе! ')
Офлайн
Sdelayte_podskazku_imenПохвально конечно,что вы потратили 2 часа.
Если что-то я упустил или найдеш ошибку в работе - пиши.
Если что-то непонятно - спрашивай.
Отредактировано papuas (Дек. 6, 2017 09:55:43)
Офлайн
doza_andМожет я неправильно изложила задание, но я уже сделала и это реально:
query=['a','b']
def match(query):
match_docs=[] #тут я собираю все list в словарях
for doc in query:
t=[]
for k,v in doc.items():#мои словари
for j in v:
t.append(j[0])
match_docs.append(t)
s=set(match_docs[0]).intersection(*match_docs) #я искала вот это
return list(s)
Офлайн
Lena13_08По какой книжке Вы учились?
Может я неправильно изложила задание, но я уже сделала и это реально:
Офлайн
papuas
Офлайн
Lena13_08у вас структура данных не поймешь какая по вашему коду
Спасибо за то что загрузили как будто я какая то неумеха
Отредактировано vic57 (Дек. 6, 2017 11:44:49)
Офлайн
vic57У меня данные именно и в МонгоДБ
Офлайн
Lena13_08дело конечно ваше, но зачем тогда костыли городите?
У меня данные именно и в МонгоДБ
Офлайн
vic57
Офлайн