繁体   English   中英

python 字典中的列表理解

[英]python list comprehension in dictionary

def square100():
  d = {f"{x}" : f"{x**2}" for x in range(101)}
  print(d)


if __name__ == "__main__":
  quadrado100()

这个 function 按升序返回值。

def square100():
  d = {f"{x} : {x**2}" for x in range(101)}
  print(d)


if __name__ == "__main__":
  quadrado100()

但是这个 function 应该做同样的事情,以随机顺序显示。 有谁知道为什么?

无话可说

后者是set理解,而不是dict理解(两者都不是list理解); 区别在于没有: (在顶层,外部字符串引号等)将键与set文字或理解中的值分开,而在dict文字或理解中有一个。

set s 具有任意顺序(对于字符串有效随机;它会在 Python 的不同运行之间发生变化,甚至可以根据添加和删除项目的顺序在 Python 的单次运行中发生变化),而dict s(在 3.6 中为一个实现细节,在 3.7+ 中作为语言保证)是按插入顺序排列的。 因此,您的代码的第一位( dict理解)保留了顺序,而基于set的后者则没有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM