Найти - Пользователи
Полная версия: Собрать все значения которые присутствуют в других словарях
Начало » Python для новичков » Собрать все значения которые присутствуют в других словарях
1 2
vic57
Lena13_08
Я думаю что можно, вот смотри у меня есть идея:
ну попробуйте и покажите. я даже придумать не могу зачем мне нужен словарь с одним ключом
Sdelayte_podskazku_imen
Лена.
Задача понятня.
Спасибо тебе от нуба, за задачку для тренировки….! Полезно! ))
Потратил пару часов - решил!
Т.к. я не совсем разобрался какова точная структура входных данных… - сначала у тебя документ выше уровня слова… а потом ты описываеш, что слово выше документа…. - то я сделал в 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('Именно ВСЕ заданные слова НЕ содержатся НИ В ОДНОМ документе! ')
Данные вводятся и выводятся как и в первом случае

Если что-то я упустил или найдеш ошибку в работе - пиши.
Если что-то непонятно - спрашивай.

Ладно.. я спать…
Удачи И в учебе И в бою!
papuas
Sdelayte_podskazku_imen
Если что-то я упустил или найдеш ошибку в работе - пиши.
Если что-то непонятно - спрашивай.
Похвально конечно,что вы потратили 2 часа.
Код безупречен.
Хочу спросить вашего разрешения для публикации данного творения на этом портале.
Lena13_08
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)

Спасибо за то что загрузили как будто я какая то неумеха
Но спасибо что хотябы попытались помогти
papuas
Lena13_08
Может я неправильно изложила задание, но я уже сделала и это реально:
По какой книжке Вы учились?
У вас python с какой-то примесью.
Sdelayte_podskazku_imen
papuas

Типа сумничал - значит за умного проканал?
vic57
Lena13_08
Спасибо за то что загрузили как будто я какая то неумеха
у вас структура данных не поймешь какая по вашему коду
имхо тут нужно key-value хранилище или БД типа монго. лучше ее поизучайте
https://pypi.python.org/pypi/pymongo
Lena13_08
vic57
У меня данные именно и в МонгоДБ
vic57
Lena13_08
У меня данные именно и в МонгоДБ
дело конечно ваше, но зачем тогда костыли городите?
хотя бы это изучите

Lena13_08
vic57


Я прекрасно знаю как работать с базами данных( разных видов)
Задание было другое
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB