You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从含字典与字符串的日志列表提取用户名报错求助

问题解决:从混合类型列表中提取用户名

错误原因

logs是列表类型,而.items()是字典专属方法,列表没有该属性,因此抛出AttributeError。同时原推导式逻辑错误,未区分列表中两种不同类型的元素(字符串和字典)。

正确实现代码

遍历logs中的每个元素,根据元素类型分别处理:

logs = [
    "nt5510-clark\\clark63",
    {
        "guid": "A07BB2CD",
        "name": "srvfs01",
        "ips": [
            "10.10.1.210"
        ]
    },
    {
        "guid": "DB2A9C9E",
        "name": "nt5510-clark",
        "ips": [
            "10.6.100.40"
        ]
    },
    {
        "guid": "97F7AEEC",
        "name": "lapinf-msa",
        "ips": [
            "192.168.0.32"
        ]
    },
    "stephen.robertson",
    "christian",
    {
        "guid": "C888A5B2",
        "name": "nb-mcsorley",
        "ips": [
            ""
        ]
    }
]

username_list = []
for item in logs:
    if isinstance(item, str):
        username_list.append(item)
    elif isinstance(item, dict) and "name" in item:
        username_list.append(item["name"])

print(username_list)

也可以用列表推导式简化写法:

username_list = [
    item if isinstance(item, str) else item["name"]
    for item in logs
    if isinstance(item, (str, dict)) and (isinstance(item, str) or "name" in item)
]

输出结果

运行后将得到期望的列表:

["nt5510-clark\\clark63","srvfs01","nt5510-clark","lapinf-msa","stephen.robertson","christian","nb-mcsorley"]

内容的提问来源于stack exchange,提问作者OverflowStack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:02:07