Skip to main content
 首页 » 编程设计

python之我可以根据将键与两个互斥键列表匹配来从单个 python 字典理解中产生两个总和吗

2025年05月04日26sxdcgaq8080

我正在尝试从包含 letter_number_pairs 的字典中输出辅音和元音值的总和,如下所示:

vowels = ['a','e','i','o','u'] 
consonants = ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'] 
letter_number_pairs = {'a': 1,'b': 8,'c': 3,'f': 3,'h': 8,'i': 2,'l': 4,'p': 2,'q': 1,'s': 5,'u': 9,'w': 0,'y': 5,'z': 2} 

我想知道的问题是:“我可以在一次通过中对元音值和辅音值求和吗?”也就是说,我是否可以避免执行字典的两次传递,如下面的工作示例所示:

vowel_value_sum     = sum(value for (letter, value) in letter_number_pairs.items() if letter in vowels) 
consonant_value_sum = sum(value for (letter, value) in letter_number_pairs.items() if letter in consonants) 

请您参考如下方法:

简单地重组你的元音和辅音数据:

letters = {'vowels':['a','e','i','o','u'], 'consonants':['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z']} 
letter_number_pairs = {'a': 1,'b': 8,'c': 3,'f': 3,'h': 8,'i': 2,'l': 4,'p': 2,'q': 1,'s': 5,'u': 9,'w': 0,'y': 5,'z': 2} 
final_sums = {a:sum(letter_number_pairs.get(i, 0) for i in b) for a, b in letters.items()} 

输出:

{'vowels': 12, 'consonants': 41}