函数每次运行不会返回相同的结果

用户1998000

我正在尝试用HTML实体替换特殊字符,但是在相同的输入下结果是随机的,我不明白为什么。

这是代码:

def secure(text):
    hsconvert = {"\'": "\\'", "\"": "\\\"", "¢": "&cent;", "©": "&copy;", "÷": "&divide;", ">": "&gt;", "<": "&lt;", "µ": "&micro;", "·": "&middot;", "¶": "&para;", "±": "&plusmn;", "€": "&euro;", "£": "&pound;", "®": "&reg;", "§": "&sect;", "™": "&trade;", "¥": "&yen;", "á": "&aacute;", "Á": "&Aacute;", "à": "&agrave;", "À": "&Agrave;", "â": "&acirc;", "Â": "&Acirc;", "å": "&aring;", "Å": "&Aring;", "ã": "&atilde;", "Ã": "&Atilde;", "ä": "&auml;", "Ä": "&Auml;", "æ": "&aelig;", "Æ": "&AElig;", "ç": "&ccedil;", "Ç": "&Ccedil;", "é": "&eacute;", "É": "&Eacute;", "è": "&egrave;", "È": "&Egrave;", "ê": "&ecirc;", "Ê": "&Ecirc;", "ë": "&euml;", "Ë": "&Euml;", "í": "&iacute;", "Í": "&Iacute;", "ì": "&igrave;", "Ì": "&Igrave;", "î": "&icirc;", "Î": "&Icirc;", "ï": "&iuml;", "Ï": "&Iuml;", "ñ": "&ntilde;", "Ñ": "&Ntilde;", "ó": "&oacute;", "Ó": "&Oacute;", "ò": "&ograve;", "Ò": "&Ograve;", "ô": "&ocirc;", "Ô": "&Ocirc;", "ø": "&oslash;", "Ø": "&Oslash;", "õ": "&otilde;", "Õ": "&Otilde;", "ö": "&ouml;", "Ö": "&Ouml;", "ß": "&szlig;", "ú": "&uacute;", "Ú": "&Uacute;", "ù": "&ugrave;", "Ù": "&Ugrave;", "û": "&ucirc;", "Û": "&Ucirc;", "ü": "&uuml;", "Ü": "&Uuml;", "ÿ": "&yuml;", "\\":"\\\\"};
    for i, j in hsconvert.items():
        text = text.replace(i, j)
        return text

print(secure("La Vie d'Adèle, chapitres 1 & 2"))

这是控制台输出:

>>> ================================ RESTART ================================
>>> 
La Vie d\'Ad&egrave;le, chapitres 1 & 2
['TV Movie', 'Video Game', 'TV Episode', 'TV Series', 'TV Series ', 'Short', 'TV Mini-Series']
>>> ================================ RESTART ================================
>>> 
La Vie d\\'Ad&egrave;le, chapitres 1 & 2
['TV Movie', 'Video Game', 'TV Episode', 'TV Series', 'TV Series ', 'Short', 'TV Mini-Series']

问题是与'它有时返回字符\'和有时\\'

我认为它来自词典中的最后一项,"\\":"\\\\"但我不明白为什么每次运行时它的解释都不相同。

安德鲁·戈斯特

正如您在答案中推测的那样,问题在于字典上的迭代没有定义的顺序。

Python 3文档中

在字典上执行list(d.keys())会以任意顺序返回字典中使用的所有键的列表(如果要对其进行排序,请改用sorted(d.keys()))。

它没有明确说明,但对item()也是一样。

在这种情况下看到迭代之间的顺序变化时,我感到有些惊讶,但是在这种情况下,任意表示意味着未定义-任何顺序在技术上都是有效的。如果您想要一致的结果,建议您重新设计算法,使其完全不影响项目的排序;否则,首先对输出进行排序或使用OrderedDict至少可以解决一致性问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Keras 预测每次都返回相同的结果

来自分类Dev

Swift:在viewDidLoad()和回调中运行单例函数,不会得到相同的结果

来自分类Dev

Lambda函数的列表或生成器在Python中不会返回相同的结果

来自分类Dev

在每次迭代中返回相同结果的收益回报

来自分类Dev

在控制台或spec2中运行时,相同的函数返回不同的结果

来自分类Dev

每次运行时,C++ OPEN SSL 库 HMAC 函数返回值都不相同?

来自分类Dev

我的'randomString'函数不断返回相同的结果

来自分类Dev

我的'randomString'函数不断返回相同的结果

来自分类Dev

相同的函数在Oracle中返回不同的结果

来自分类Dev

每次运行get-eventlog返回不同的结果

来自分类Dev

返回多次使用的数组的函数每次给出的值相同

来自分类Dev

具有相同参数的函数不会返回相同的值

来自分类Dev

Doctesting 在每次运行期间返回不同地图的函数

来自分类Dev

iOS 6和7不会返回相同的结果

来自分类Dev

python-返回和打印不会给出相同的结果

来自分类Dev

将NOT IN转换为NOT EXISTS不会返回相同的结果

来自分类Dev

Python3多次使用相同的输入运行相同的函数,但每次都会产生不同的输出

来自分类Dev

每次返回对象的相同实例

来自分类Dev

为什么每次运行循环时都没有得到相同的结果?

来自分类Dev

VS Cloud Load Test:每次使用相同的脚本运行时,结果都是不同的(太多)

来自分类Dev

为什么python函数使用相同的参数返回不同的结果?

来自分类Dev

返回相同结果的倍数

来自分类Dev

Powershell-如果SQL查询返回结果,则运行函数

来自分类Dev

递归函数返回值保留以前运行的结果

来自分类Dev

为什么与dplyr的mutate一起使用时,摘要函数每次都返回相同的值?

来自分类Dev

函数不会在所有代码路径上返回值。使用结果时,运行时可能会出现空引用异常

来自分类Dev

函数不会在所有代码路径上返回值。使用结果时,运行时可能会出现空引用异常

来自分类Dev

每次运行使用SQL Impala中的Lead函数的我时,都会得到不同的结果

来自分类Dev

该方法每次给出相同的结果

Related 相关文章

  1. 1

    Keras 预测每次都返回相同的结果

  2. 2

    Swift:在viewDidLoad()和回调中运行单例函数,不会得到相同的结果

  3. 3

    Lambda函数的列表或生成器在Python中不会返回相同的结果

  4. 4

    在每次迭代中返回相同结果的收益回报

  5. 5

    在控制台或spec2中运行时,相同的函数返回不同的结果

  6. 6

    每次运行时,C++ OPEN SSL 库 HMAC 函数返回值都不相同?

  7. 7

    我的'randomString'函数不断返回相同的结果

  8. 8

    我的'randomString'函数不断返回相同的结果

  9. 9

    相同的函数在Oracle中返回不同的结果

  10. 10

    每次运行get-eventlog返回不同的结果

  11. 11

    返回多次使用的数组的函数每次给出的值相同

  12. 12

    具有相同参数的函数不会返回相同的值

  13. 13

    Doctesting 在每次运行期间返回不同地图的函数

  14. 14

    iOS 6和7不会返回相同的结果

  15. 15

    python-返回和打印不会给出相同的结果

  16. 16

    将NOT IN转换为NOT EXISTS不会返回相同的结果

  17. 17

    Python3多次使用相同的输入运行相同的函数,但每次都会产生不同的输出

  18. 18

    每次返回对象的相同实例

  19. 19

    为什么每次运行循环时都没有得到相同的结果?

  20. 20

    VS Cloud Load Test:每次使用相同的脚本运行时,结果都是不同的(太多)

  21. 21

    为什么python函数使用相同的参数返回不同的结果?

  22. 22

    返回相同结果的倍数

  23. 23

    Powershell-如果SQL查询返回结果,则运行函数

  24. 24

    递归函数返回值保留以前运行的结果

  25. 25

    为什么与dplyr的mutate一起使用时,摘要函数每次都返回相同的值?

  26. 26

    函数不会在所有代码路径上返回值。使用结果时,运行时可能会出现空引用异常

  27. 27

    函数不会在所有代码路径上返回值。使用结果时,运行时可能会出现空引用异常

  28. 28

    每次运行使用SQL Impala中的Lead函数的我时,都会得到不同的结果

  29. 29

    该方法每次给出相同的结果

热门标签

归档