Crkylin 2022-08-11 17:46 采纳率: 80%
浏览 84
已结题

Python中字典的items函数的返回值存疑

先说起因,我在学习MOOC上北理嵩天的Python课程,在编写一段代码时发现了这样的问题:

counts = {}
for word in words:
    if len(word)==1:
        continue
    elif word == "诸葛亮" or word == "孔明曰":
        rword = "孔明"
    elif word == "孟德" or word == "丞相":
        rword = "曹操"
    elif word == "玄德" or word == "玄德曰":
        rword = "刘备"
    elif word == "关公" or word == "云长":
        rword = "关羽"
    else:
        rword = word
    counts[rword] = counts.get(rword,0) + 1
for word in excludes:
    del counts[word]
items = list(counts.items())

最后一行便是问题所在既然counts.items()函数的返回值是一个列表
那为何还要用list()将counts.items()的返回值转化为列表类型呢?

我自己尝试着打印了一下counts.items()的结果,从形式上看,返回值的确是一个元组类型

x = {'title':'python web site','name':'123'}
print(x.items())

运行结果:dict_items([('title', 'python web site'), ('name', '123')]) #最外层是括号,这不应该是元组类型吗?
但我在网络上铺天盖地地搜了很多关于items()函数的信息,都说items()函数的返回值是一个列表,这属实给我带来了很大的困惑。
希望大家能够帮我解答!

  • 写回答

2条回答 默认 最新

  • qfcy_ 2022-08-11 17:48
    关注

    Python 2的items()函数的返回值是一个列表, 但在Python 3中为了优化性能, 改成了一个可迭代对象, 所以需要用list()转换。

    img


    img


    Python 版本不同, 特性就不同。
    如果有帮助, 点个「采纳」谢谢。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月14日
  • 已采纳回答 8月11日
  • 创建了问题 8月11日

悬赏问题

  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题