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

Python 向嵌套字典中的列表添加元组,python,dictionary,tuples,data-manipulation,Python,Dictionary,Tuples,Data Manipulation,我想添加一个元组到一个列表中,如果我已经有嵌套字典格式的数据丢失的话 all_cap = {"cap_1":{"id":1001, "vitals":[("Temp", 101), ("HR", 60)]}, "cap_2": {"id":1002, "vitals":[("Temp", 104), ("HR", 60), ("RR", 12)]}} 因此,如果我向cap_1添加一个元组(“RR”,16),它会起作用,但是如果我想将它添加到cap_2,它不会覆盖已经存在的RR,甚至不会向它添

我想添加一个元组到一个列表中,如果我已经有嵌套字典格式的数据丢失的话

all_cap = {"cap_1":{"id":1001, "vitals":[("Temp", 101), ("HR", 60)]}, "cap_2": 
{"id":1002, "vitals":[("Temp", 104), ("HR", 60), ("RR", 12)]}}
因此,如果我向cap_1添加一个元组(“RR”,16),它会起作用,但是如果我想将它添加到cap_2,它不会覆盖已经存在的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),所以启动并运行其中的一些功能让人望而生畏。

您可以通过搜索元组列表来实现这一点,但根据使用情况,看起来这些应该只是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\u 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

我喜欢这个选项,因为在将来,不幸的是,我现在有更多的字典,比如有元组的字典,所以我不能改变字典的整体结构,我需要能够查看并签出它们,同时将它们保持在已存在的相同结构中。通过列表理解和
any
函数进行更新。我尝试运行此功能,但实际上,它对我不起作用。关键的部分似乎就是问题所在。这样写,它是一个没有定义的对象,但切换到vital.pair,它是一个没有pair属性的对象(至少这是我得到的两个错误)。啊,列表理解需要是
对于all\u cap中的vital\u pair…