【问题标题】:Adding tuples to lists in nested dictionaries将元组添加到嵌套字典中的列表
【发布时间】:2019-10-27 23:44:41
【问题描述】:

如果我已经拥有嵌套字典格式的数据,我想将元组添加到列表中。

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_1 它会起作用,但如果我想将它添加到 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),所以开始使用其中的一些是令人生畏的。

【问题讨论】:

    标签: python dictionary tuples data-manipulation


    【解决方案1】:

    您可以通过搜索元组列表来执行此操作,但根据使用情况,这些似乎应该只是 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
    

    【讨论】:

    • 我以后喜欢这个选项,不幸的是我现在有更多的字典,比如里面有元组的字典,所以我不能改变字典的整个结构,我需要能够通过并检查它们,同时将它们保持在它们已经存在的相同结构中。
    • 更新了一种通过列表理解和any 函数来实现的方法。
    • 我尝试运行它,但实际上它对我不起作用。 vital_pair 部分似乎是问题所在。这样写,它是一个没有定义的对象,但是切换到了 vital.pair,它是一个没有 pair 属性的对象(至少这是我得到的两个错误)。
    • 啊,列表理解必须是for vital_pair in all_cap...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2021-01-17
    • 2023-01-22
    • 2021-05-10
    • 2020-07-04
    相关资源
    最近更新 更多