2017-11-17 167 views
4

首先,我知道有很多類似的帖子我已經在下面列出,但是,沒有人知道我回答的問題是面對這是因爲我發現的所有問題都是如何在'dict.values()'中搜索一個字符串,而不是搜索字符串中的每個字符,並檢查它是否在'dict.values()'和如果它在'dict.values()'的字符中出現的字符串中找到任何字符,它將返回哪些字符和多少字符。如何從一個字符串中搜索所有字符Dictionary.Values()

鏈接到類似的職位不回答這個問題,但可能是有用的一些:

How to search if dictionary value contains certain string with Python

Find dictionary items whose key matches a substring

How can I check if the characters in a string are in a dictionary of values?

How to search if dictionary value contains certain string with Python

這是我迄今爲止,但似乎沒有工作...

characters = {'small':'abcdefghijklmnopqrstuvwxyz', 
       'big':'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
       'nums':'', 
       'special':"!#$%&()*+,-./:;<=>[email protected][\]^_{|}~",} 

password = 'aAb' 

def count(pass_word,char_set): 

    num_of_char = 0 
    char_list = [] 

    for char in pass_word: 
     if i in char_set.values(): 
      num_of_char +=1 
      char_list += i 

    return char_list, num_of_char 


#Print result 

print(count(password,characters)) 

輸出應該類似於:

'a','A','b' 
3 

希望你明白我的意思,如果有什麼不清楚的,請發表評論,這樣我就可以改善。

+0

不好意思問,但什麼ü平均組件明智的即時通訊新張貼和從來沒有碰到過這句話 – Ivan

+1

不用擔心他,所有你需要做的就是提供相關的標籤,你所做的。如果他不想閱讀帖子,就擰他。 – postoronnim

+0

; D好的,謝謝 – Ivan

回答

1
def count(password, char_dict): 
    sanitized_pass = [char for char in password if any(char in v for v in char_dict.values())] 
    return sanitized_pass, len(sanitized_pass) 

這是一種方法。另一個辦法是建立所有接受Ç 字符的set並傳遞給函數的密碼

from itertools import chain 


char_set = set(chain.from_iterable(characters.values())) 

def count(password, chars): 
    sanitized_pass = [char for char in password if char in char_set] 
    return sanitized_pass, len(sanitized_pass) 
+0

嘿,即時通訊只是想知道代碼是從哪個'dict.key()'每個字符被發現打印出來? – Ivan

+1

@伊萬我不知道我明白。你的意思是試圖確定我們用哪個字母來代替某個角色?如果有重複項,稍後的項目將覆蓋較早的項目,因此無論哪個字母表更接近'alphabets'迭代的末尾將被使用 –