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

Python中如何从字典提取指定键并添加至另一个字典?

问题

目标是从包含多组键值对的boss_list字典中取出指定键(存储在bossname变量中),添加到空字典boss_timers_dict中,该键对应的值存储在min变量中。现有代码如下:

import time
import asyncio

boss_list = {
"test": 20,
"hi": 3,
"170": 80,
}

boss_timers_dict = {}

async def boss_down(bossname, min):
    due_at = int(time.time()+(min))
    hm_from_now = int(due_at) - int(time.time())
    due_in_six = int(due_at) - int(time.time() + int(6))
    print("timed msg here...")

    for hm_from_now in range(due_at):

        if hm_from_now == min:
            # 此处为问题所在
            if bossname in boss_list:
                boss_timers_dict.update([bossname])

            coro = asyncio.sleep(1)
            await coro
            del boss_timers_dict[bossname]
            break

尝试过以下写法但未成功:

if bossname in boss_list:
    boss_timers_dict.update(bossname)

请问正确的实现方式是什么?

正确实现方式

你之前的写法出错是因为字典的update()方法要求传入字典对象或者由键值对组成的可迭代对象,直接传字符串或单元素列表不符合方法的参数要求。要把bossname对应的键值对加入boss_timers_dict,有两种简单的正确写法:

  • 直接赋值(最直观)
    这是操作字典最常用的方式,直接通过键名赋值即可:

    if bossname in boss_list:
        boss_timers_dict[bossname] = min
    
  • 使用update()方法
    如果一定要用update(),需要传入包含键值对的结构:

    if bossname in boss_list:
        # 传入字典
        boss_timers_dict.update({bossname: min})
        # 或者传入键值对元组组成的列表
        boss_timers_dict.update([(bossname, min)])
    

另外提一句:你代码里的循环逻辑有明显问题——range(due_at)会生成从0到due_at-1的整数序列,而hm_from_now == min的判断逻辑大概率和你想要的定时逻辑不符,要是后续定时功能出问题,得重点排查这块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:01:27