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_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),所以开始并运行其中的一些是令人生畏的。
解决方案
您可以通过搜索元组列表来执行此操作,但根据使用情况,看起来这些应该只是 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
推荐阅读
- javascript - 使用 jQuery 选择所有至少有 2 个子元素的元素
- php - 如何登录网站并保存 cookie?
- javascript - 新日期时使用附加对象更新关键 playerEffectiveDetails
- ibm-cloud-private - 有没有办法移动已安装 ICP 的 ICP 私有映像注册表的位置?
- html - 输入中的上标
- python - 如何只向用户询问一次符号值而不是在每次迭代中?
- c# - 图像未显示在 datagridview 中
- python - 提高在列表中查找项目索引的速度
- windows - WebPack devServer - localhost 拒绝连接
- mysql - MySQL 在没有其他类似的情况下插入新值