向嵌套字典中的列表添加元组

2024-04-25 01:54:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想添加一个元组的数据,我已经在一个嵌套字典格式的列表,如果它丢失。你知道吗

all_cap = {"cap_1":{"id":1001, "vitals":[("Temp", 101), ("HR", 60)]}, "cap_2": 
{"id":1002, "vitals":[("Temp", 104), ("HR", 60), ("RR", 12)]}}

因此,如果我去添加一个元组(“RR”,16)到cap\u1,它会工作,但如果我想添加它到cap\u2,它不会覆盖已经存在的RR,甚至不会添加第二个RR到它。我试着这样说:

def add_vital(dict, str, int):
  if all_cap[dict]["vitals"][0][0:len("vitals")] == str:
    return True
  else:
    all_caps[dict]["vitals"].append(str, int)
    return False

我知道我今天在这里问了很多问题,我真的很感谢你的回答。它一直很有帮助,但我今天才开始尝试用Python做一些工作(之前,我只使用了R),所以启动并运行其中的一些东西让人望而生畏。你知道吗


Tags: 数据idreturn字典格式rrhrall
1条回答
网友
1楼 · 发布于 2024-04-25 01:54:56

您可以通过搜索元组列表来实现这一点,但是根据用法,这些元组似乎应该是dicts的dicts。你知道吗

all_cap = { 
    "cap_1": { "id": 1001, "vitals": {
        "Temp": 101, 
        "HR": 60,
    }},
    "cap_2": { "id": 1002, "vitals": {
        "Temp": 104,
        "HR": 60,
        "RR": 12,
    }},
}

现在您的add_vital函数只是:

def add_vital(cap_id, vital, value):
    # type: (str, str, int) -> bool
    if vital in all_cap[cap_id]["vitals"]:
        return True
    else:
        all_cap[cap_id]["vitals"][vital] = value
        return False

考虑到你的结构,我认为你需要更像:

def add_vital(cap_id, vital, value):
    # type: (str, str, int) -> bool
    if any([vital_pair[0] == vital 
            for vital_pair in all_cap[cap_id]["vitals"]]):
        return True
    else:
        all_cap[cap_id]["vitals"].append((vital, value))
        return False

相关问题 更多 >