鱼C论坛

 找回密码
 立即注册
查看: 58|回复: 1

[已解决]问题求助

[复制链接]
发表于 2025-1-3 12:56:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近重装安装了Python,修改了安装路径,然后就出现了众多提示,但是代码能正常运行。
以下为提示之一,请各位指教。

代码:
wb = openpyxl.load_workbook('行政区划表.xlsx')['Sheet1']
code_data = dict(list(wb.iter_rows(values_only=True)))

其中第2行dict之后被标记,并提示以下信息:

“__init__”的重载与提供的参数不匹配Pylance(reportCallIssue)

builtins.pyi(1109, 9): 重载 8 是最接近的匹配项

class dict(): ...

class dict(
    map: SupportsKeysAndGetItem[bytes, bytes],
    /
): ...

class dict(
    iterable: Iterable[tuple[bytes, bytes]],
    /
): ...

class dict(
    iterable: Iterable[list[bytes]],
    /
): ...

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs
dict(iterable) -> new dictionary initialized as if via:
    d = {} for k, v in iterable:
        d[k] = v
dict(**kwargs) -> new dictionary initialized with the name=value pairs
    in the keyword argument list. For example: dict(one=1, two=2)



最佳答案
2025-1-3 13:02:48
看起来您遇到的问题是由于Pylance的类型检查,它可能认为`iter_rows`返回的结果不符合`dict`的要求。

`openpyxl.iter_rows(values_only=True)`返回的是一个生成器,每一行都是一个元组。因此,直接用`dict`转换可能会引起`类型不匹配`的警告,因为`dict`需要一个可以解包成键值对(即两个元素的可迭代对象)。

要解决这个问题,首先要确保`iter_rows`生成的每一行确实是键值对。如果你期望用第一列作为键,第二列作为值,你可以这样写:
wb = openpyxl.load_workbook('行政区划表.xlsx')
sheet = wb.active
code_data = {row[0]: row[1] for row in sheet.iter_rows(values_only=True)}

这样做可以确保每一行都变成`{key: value}`的形式。同时,请确认您的Excel表内数据格式符合这个结构。

如果执行之后仍遇到问题,检查数据中是否有空值或单元格格式问题,这也可能会引发类似警告。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-1-3 13:02:48 | 显示全部楼层    本楼为最佳答案   
看起来您遇到的问题是由于Pylance的类型检查,它可能认为`iter_rows`返回的结果不符合`dict`的要求。

`openpyxl.iter_rows(values_only=True)`返回的是一个生成器,每一行都是一个元组。因此,直接用`dict`转换可能会引起`类型不匹配`的警告,因为`dict`需要一个可以解包成键值对(即两个元素的可迭代对象)。

要解决这个问题,首先要确保`iter_rows`生成的每一行确实是键值对。如果你期望用第一列作为键,第二列作为值,你可以这样写:
wb = openpyxl.load_workbook('行政区划表.xlsx')
sheet = wb.active
code_data = {row[0]: row[1] for row in sheet.iter_rows(values_only=True)}

这样做可以确保每一行都变成`{key: value}`的形式。同时,请确认您的Excel表内数据格式符合这个结构。

如果执行之后仍遇到问题,检查数据中是否有空值或单元格格式问题,这也可能会引发类似警告。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-24 05:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表