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

如何解决Python字典添加元素时字符串'10'被拆分的问题

问题:向扑克牌字典的列表值添加"10"时被拆分为"1"和"0"的修复方案

问题代码及输出

代码

suits = ['h', 'd', 's', 'c']
values = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
cards = {"h" : [], 'd': [], 's': [], 'c': []}

for suit in cards:
    for value in values:
        cards[suit] += value

print(cards)

错误输出

{'h': ['A', '2', '3', '4', '5', '6', '7', '8', '9', '1', '0', 'J', 'Q', 'K'], 'd': ['A', '2', '3', '4', '5', '6', '7', '8', '9', '1', '0', 'J', 'Q', 'K'], 's': ['A', '2', '3', '4', '5', '6', '7', '8', '9', '1', '0', 'J', 'Q', 'K'], 'c': ['A', '2', '3', '4', '5', '6', '7', '8', '9', '1', '0', 'J', 'Q', 'K']}

问题原因

cards[suit] += value这行代码中,列表的+=操作会将右侧的可迭代对象(字符串属于可迭代对象)拆分为单个元素逐个追加。"10"作为字符串,会被拆成"1"和"0"两个独立元素加入列表。

修复方案

有两种简单的修复方式:

方式1:使用列表的append()方法

直接调用append()将整个value作为单个元素添加到列表中:

suits = ['h', 'd', 's', 'c']
values = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
cards = {"h" : [], 'd': [], 's': [], 'c': []}

for suit in cards:
    for value in values:
        cards[suit].append(value)  # 替换为append方法

print(cards)

方式2:将value包装为列表后使用+=

把单个value放到列表里,这样+=会把整个列表的元素(即单个value)追加进去:

suits = ['h', 'd', 's', 'c']
values = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
cards = {"h" : [], 'd': [], 's': [], 'c': []}

for suit in cards:
    for value in values:
        cards[suit] += [value]  # 将value包装为列表

print(cards)

正确输出

{'h': ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'], 'd': ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'], 's': ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'], 'c': ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']}

内容的提问来源于stack exchange,提问作者Brad Richerson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:45:16