Python 2.7-min内置函数未按预期工作

Python 2.7-min内置函数未按预期工作,python,dictionary,min,built-in,Python,Dictionary,Min,Built In,我正在做Google Python练习,不理解min()内置函数的行为,它似乎不会产生预期的结果。 这个练习是“babynames”,我正在用“baby1990.html”文件测试代码 () 我不知道臭虫在哪里。通过解释器,min(94603)=94,如预期的那样。我错过了什么 谢谢你的帮助 PS:我也试过了 最小值(n,d[f]) 这是同一个没有列表的函数,但结果总是603您正在比较字符串,而不是数字: >>> min('603', '94') '603' 从词法上讲,'6

我正在做Google Python练习,不理解min()内置函数的行为,它似乎不会产生预期的结果。 这个练习是“babynames”,我正在用“baby1990.html”文件测试代码 ()

我不知道臭虫在哪里。通过解释器,min(94603)=94,如预期的那样。我错过了什么

谢谢你的帮助

PS:我也试过了 最小值(n,d[f])
这是同一个没有列表的函数,但结果总是603

您正在比较字符串,而不是数字:

>>> min('603', '94')
'603'
从词法上讲,
'6'
排序在
'9'
之前。正则表达式处理字符串,即使数字匹配,返回的匹配也是字符串。使用
int()
将字符串转换为整数:

vals = re.findall(r'<td>(\d+)</td><td>(\w+)</td><td>(\w+)</td>', f)
for n, m, f in vals:
    n = int(n)
    # ...
vals=re.findall(r'(\d+)(\w+)(\w+),f)
对于VAL中的n、m、f:
n=int(n)
# ...

尝试调试Python代码时,使用
repr()
而不是
str()
来检测类型问题;如果您使用了
repr()
,您会看到将打印
'94'
,而不是
94
(因此用引号表示字符串)。

您正在比较字符串,而不是数字:

>>> min('603', '94')
'603'
从词法上讲,
'6'
排序在
'9'
之前。正则表达式处理字符串,即使数字匹配,返回的匹配也是字符串。使用
int()
将字符串转换为整数:

vals = re.findall(r'<td>(\d+)</td><td>(\w+)</td><td>(\w+)</td>', f)
for n, m, f in vals:
    n = int(n)
    # ...
vals=re.findall(r'(\d+)(\w+)(\w+),f)
对于VAL中的n、m、f:
n=int(n)
# ...

尝试调试Python代码时,使用
repr()
而不是
str()
来检测类型问题;如果你使用了
repr()
,你会看到
'94'
将被打印出来,而不是
94
(因此用引号表示字符串)。

打字:“你使用了
str()
你会…”应该说
repr()
(我会自己编辑,但我不想知道这样处理并发编辑有多好。)@delnan:Ah,应该读得更好,不要把重点放在评论中的错误上-谢谢你的快速回复。我永远也找不到这个!但是为什么603是int而不是string呢?@jsil:
'603'
也是string;我最初的诊断有点不对劲,从那个以后我调整了我的答案。非常感谢!!非常有帮助!打字:“你用过
str()
你会…”应该说
repr()
(我会自己编辑,但我不想知道这样处理并发编辑有多好。)@delnan:啊,应该读得更好,不要把注意力放在评论中的打字错误上-谢谢你的快速回复。我永远也找不到这个!但是为什么603是int而不是string呢?@jsil:
'603'
也是string;我最初的诊断有点不对劲,从那个以后我调整了我的答案。非常感谢!!非常有帮助!