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

Python字典输出与预期不符,添加字符串元素失效怎么解决?

问题原因

你代码里的核心问题出在list.index()方法的特性:该方法只会返回指定元素在列表中第一次出现的索引。
比如你遍历到列表里第2个值为1的元素时,adatok.index(1)返回的还是第一个1的位置索引1,所以每次取到的前一个元素都是adatok[0]即marha,往set里添加重复元素不会产生任何变化,最终1对应的set里就只有1个值;同理数字2的匹配也只会拿到第一次出现时对应的前一个元素kacsa,就会出现和预期不一致的输出。

修复方案

不要用index()方法动态查找位置,直接遍历列表的索引+元素对即可,修改后的代码如下:

adatok = ["marha", 1, "kacsa", 2, "kacsa", 1, "birka", 3, "marha", 4, "marha", 2]
sorszámok = list(set([x for x in adatok if type(x) == int]))

szótár = {}
for i in sorszámok:
    szótár.update({i:set()})

# 改用enumerate同时获取索引和元素
for idx, j in enumerate(adatok):
    if type(j) == int:
        # 直接用当前索引取前一位元素,避免index()的重复查找问题
        szótár[j].add(adatok[idx-1])

print(szótár)
# 输出符合预期:{1: {'marha', 'kacsa'}, 2: {'kacsa', 'marha'}, 3: {'birka'}, 4: {'marha'}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:15:03