Python 연습 20: 패턴 찾기

6332 단어

의문


  • 최대 6개의 구문을 포함하는 사전이 주어지면,
  • 주어진 문자열(p)에 따라 일치하는 문구가 포함된 목록을 반환합니다.

  • 지정된 문자열 뒤나 앞에 있는 숫자를 무시합니다.
  • 첫 글자가 대문자인지 아닌지,
  • 단어의 모든 문자가 주어진 문자열(p)과 일치하면 유효합니다.

  • 주어진 문자열(p)과 일치하지 않으면 없음입니다.

  • 예시


  • 예시 1

  • find_pattern({
      "Phrase1": "COVID-19 is no good",
      "Phrase2": "COVID-18 is no good",
      "Phrase3": "COVID-17 is no good"
    }, "COVID-19")
    
    ➞ ["Phrase1 = COVID-19", "Phrase2 = None", "Phrase3 = None"]
    


  • 예시 2

  • find_pattern({
      "Phrase1": "Edabit is great",
      "Phrase2": "Edabit is very great",
      "Phrase3": "Edabit is really great"
    }, "really")
    
    ➞ ["Phrase1 = None", "Phrase2 = None", "Phrase3 = really"]
    


    내 솔루션


  • 알고리즘

  • >>get the value of each Phrase
    >>separate the the value into a list by white space 
    >>store each separated value into list
      the list name from phase1_list to phase6_list
    >>check if the given string (p) appear in the each phrase
      for phrase1 to phrase 6:
          if the given string (p) appear in the phrase value
          add that phrase and value into one string
          add that string to the final list
    >>return a final list
    


  • 코드

  • def find_pattern(dictionary: dict, string_p: str) -> list:  
        prefix = "Phrase"  
        counter = 1  
        final_list = []  
        for sentence in dictionary.values():  
            if string_p in sentence:  
                final_list.append(f"{prefix}{counter} = {string_p}")  
            else:  
                final_list.append(f"{prefix}{counter} = None")  
            counter += 1  
        return final_list
    


    기타 솔루션




    def find_pattern(dict_, p):
        phrase = {True:p,False:"None"}
        phrases = []
        for key,val in dict_.items():
            phrases.append('{} = {}'.format(key,phrase[p in val]))
        return sorted(phrases)
    


  • 최단 버전

  • def find_pattern(dct, p):
        return sorted("{} = {}".format(d, p if p in dct[d] else None) for d in dct)
    


    신용 거래


  • 도전 edabit
  • 좋은 웹페이지 즐겨찾기