python - 尝试迭代和比较列表和字典中的值时出现类型错误
问题描述
我正在尝试遍历一个列表,该列表是一个 json 的导入和一个我想将列表的值存储在值位置的字典。问题是,当我遍历列表并执行比较 if 语句时,我收到此错误消息
if i["service"] == serviceIp[i]:
TypeError: unhashable type: 'dict'
我想存储服务地址的字典
serviceIp = {
"service-A": "",
"service-B": ""
}
从 json 导入的列表,包括所有地址
服务地址
[{'service': 'service-A', 'address': ['localhost1']}, {'service': 'service-B', 'address': ['localhost2']}]
这是我的循环和 if 语句
for i in serviceAddress:
if i["service"] == serviceIp[i]:
知道是什么导致了这个错误吗?我的目标是比较服务的键并将服务值存储到字典的值中
解决方案
i
for 循环中的值是一个字典。例如:{'service': 'service-A', 'address': ['localhost1']}
并且不能用作 dict 的键。
如果要在 dict 中存储服务名称的地址,可以这样做:
for s in serviceAddress:
serviceIp[s["service"]] = s["address"]
或者,如果您不想确保只添加其名称已经在serviceIp
字典中的服务:
for s in serviceAddress:
if s["service"] in serviceIp:
serviceIp[s["service"]] = s["address"]
推荐阅读
- javascript - 如何使用css和离子将文本放在左下角
- linux - 如何从另一个文件 2 保持空行中删除文件 1 上出现的行?
- python-3.x - 在同一条路线上使用多个请求加速女服务员服务器上的烧瓶应用程序
- python - 使用 project.yml 文件训练 spaCy 3.0 模型时出错
- ios - for-await-in 循环在 Swift 5.5 中不起作用
- java - 如何实现一个java桌面应用的自动打包系统
- c# - 对象的成员列表未在 .NET Core API 控制器中复制
- apache-camel - Apache Camel @UriEndpoint 是否仅用于自动生成 HTML 文档?
- r - 用一个特定的词替换整个字符串
- python - 类装饰器函数示例