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

如何将进程名称与进程ID存入字典并实现.get()方法调用?

解决方法:用字典存储进程名与PID,支持.get()查询

嘿,这问题很常见,我来帮你搞定!首先得先弄明白你之前代码报错的原因:list.append()方法只能接受一个参数,你传了process.Name和process.ProcessId两个参数,自然会触发TypeError。而且你需要的是字典(不是列表)来存储键值对,这样才能用.get()方法安全获取特定进程的ID。

下面分几种情况给你实现方案:


方案1:直接用进程名作为键(简单直接,注意重名覆盖)

这种方案最直观,把进程名作为字典的键,对应的PID作为值。如果有同名进程,后面的会覆盖前面的(因为字典的键唯一)。

import wmi

# 初始化一个空字典,用来存进程名和PID的映射
process_map = {}

c = wmi.WMI()
for process in c.Win32_Process():
    # 把进程名作为键,PID作为值存入字典
    process_map[process.Name] = process.ProcessId

# 打印完整的进程映射
print(process_map)

# 使用.get()方法获取特定进程的PID,比如查询chrome.exe
target_pid = process_map.get("chrome.exe")
print(f"chrome.exe的PID是: {target_pid}")

# 可以给.get()指定默认值,避免键不存在时返回None
target_pid = process_map.get("nonexistent.exe", "未找到该进程")
print(target_pid)

方案2:生成类似process 1的编号键(匹配你给出的示例格式)

如果你想要像{"process 1": 123, "process 2": 321}这样的格式,可以用enumerate()给每个进程加编号:

import wmi

process_map = {}

c = wmi.WMI()
# enumerate从1开始计数,生成process 1、process 2这样的键名
for idx, process in enumerate(c.Win32_Process(), start=1):
    key_name = f"process {idx}"
    # 如果你想同时保留进程名和PID,可以把值设为元组:(process.Name, process.ProcessId)
    process_map[key_name] = process.ProcessId

print(process_map)

# 用.get()获取指定编号的进程PID
target_pid = process_map.get("process 3")
print(f"process 3的PID是: {target_pid}")

方案3:处理同名进程(一个进程名对应多个PID)

如果你的系统里有多个同名进程(比如多个cmd.exe窗口),可以把字典的值设为列表,存储该进程名的所有PID:

import wmi

process_map = {}

c = wmi.WMI()
for process in c.Win32_Process():
    proc_name = process.Name
    proc_pid = process.ProcessId
    # 如果进程名不在字典里,先初始化一个空列表
    if proc_name not in process_map:
        process_map[proc_name] = []
    # 把PID添加到对应进程名的列表中
    process_map[proc_name].append(proc_pid)

print(process_map)

# 获取所有notepad.exe的PID,默认返回空列表表示未找到
notepad_pids = process_map.get("notepad.exe", [])
print(f"所有notepad.exe的PID: {notepad_pids}")

总结一下:你之前的核心问题是误用了列表的append()方法,而需要用字典来实现键值对存储。上面的几种方案可以根据你的实际需求选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 17:52:39