You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用dict comprehension(字典推导式)简化Python指定代码

Python字典推导式简化随机字母统计代码

原代码逻辑为抽取指定数量的元音字母、剩余数量的辅音字母,统计每个字母的出现次数存入字典。注意原代码存在变量名大小写不一致的问题(定义的是小写vowel/consonants,循环中使用大写VOWELS/CONSONANTS),统一变量名后可参考如下实现:

纯字典推导式实现(无需引入额外库)

import random

VOWELS = "aeiou"
CONSONANTS = "bcdfghjklmnpqrstvwxyz"

hand = {
    char: all_chars.count(char)
    for all_chars in [
        [random.choice(VOWELS) for _ in range(numVowels)] + 
        [random.choice(CONSONANTS) for _ in range(n - numVowels)]
    ]
    for char in all_chars
}

逻辑说明:

  • 内层先生成和原逻辑完全一致的随机字母序列:前numVowels个元素从元音中随机选取,剩余n - numVowels个从辅音中随机选取
  • 外层遍历所有生成的随机字母,通过count方法统计每个字母的出现次数,效果和原代码中hand.get(x, 0) + 1累加完全一致
  • 将随机字母序列放在单元素列表中做临时存储,避免推导式中重复生成随机序列

更简洁的优化写法(借助collections.Counter)

如果允许引入标准库的Counter,代码更简洁、大数量场景下性能也更好:

import random
from collections import Counter

VOWELS = "aeiou"
CONSONANTS = "bcdfghjklmnpqrstvwxyz"

hand = dict(Counter(
    [random.choice(VOWELS) for _ in range(numVowels)] + 
    [random.choice(CONSONANTS) for _ in range(n - numVowels)]
))

内容的提问来源于stack exchange,提问作者Otto Rodríguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:36:04