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

Python生成含card_name、card_type键的字典列表问题

问题原因

代码在循环外提前定义了全局字典comb,所有循环操作修改的都是同一个字典对象,追加到card_deck列表里的元素全是指向这个字典的引用。循环结束后,字典存储的是最后一次循环赋值的内容,因此列表里所有元素看起来完全一致。

修复方法

不要复用循环外的同一个字典,每次生成卡牌组合时新建独立的字典对象即可,修正后代码:

suits = [
     'Clubs',
     'Diamonds',
     'Hearts',
     'Spades',
]

cards = [
     'Ace',
     '2',
     '3',
     '4',
     '5',
     '6',
     '7',
     '8',
     '9',
     '10',
     'Jack',
     'Queen',
     'King',
]

card_deck = []

for card_name in cards:
    for suit in suits:
        # 每次循环初始化新字典,避免复用同一对象
        comb = {
            'card_name': card_name,
            'card_type': suit
        }
        card_deck.append(comb)

print(card_deck)
额外提示
  • Python中字典、列表属于可变对象,变量赋值传递的是对象内存引用,不是独立副本,多个引用指向同一对象时,修改操作会同步影响所有引用的取值
  • 如果一定要提前定义字典模板,也可以在追加时传入字典的浅拷贝:card_deck.append(comb.copy()),但当前场景下直接在循环内新建字典可读性更高

内容的提问来源于stack exchange,提问作者Elias Sarah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:51:20