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

根据列表值匹配字典键生成新字典却返回空集,求原因与解决

问题分析与解决方案

我来帮你揪出问题根源,你得到空结果主要是两个关键错误导致的:

1. 类型不匹配(最核心问题)

你看,原字典里的键7777777是整数类型,但你的列表my_list里对应的条目是字符串类型的"7777777"。在Python里,整数和字符串是完全不同的对象,所以k in my_list这个判断永远会返回False,自然找不到任何匹配的键值对。

2. 字典操作方法错误

你用了new_dict.append(k),但append()是列表的专属方法,字典根本没有这个方法。而且你也没提前把new_dict初始化为空字典,正确的做法应该是先定义new_dict = {},然后用new_dict[k] = my_dict[k]来添加符合条件的键值对。

修正后的代码

这里提供两种修正思路,你可以根据需求选择:

思路一:把字典的键转成字符串和列表匹配

my_list = ["7777777", "888888", "99999"]
my_dict = {21058199: '500', 7777777: '500', 21058199: '500'}
new_dict = {}

for k in my_dict.keys():
    if str(k) in my_list:
        new_dict[k] = my_dict[k]

print(new_dict)  # 输出: {7777777: '500'}

思路二:把列表的元素转成整数和字典键匹配

my_list = ["7777777", "888888", "99999"]
my_dict = {21058199: '500', 7777777: '500', 21058199: '500'}
# 先把列表转成整数列表
int_list = [int(item) for item in my_list]
new_dict = {}

for k in my_dict.keys():
    if k in int_list:
        new_dict[k] = my_dict[k]

print(new_dict)  # 输出: {7777777: '500'}

另外提个小细节:你原字典里重复出现了21058199这个键,Python字典会自动保留最后一个键值对,所以实际my_dict里21058199只会有一个条目哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:10:13