我正在尝试从包含 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}
