我编写了一个简单的功能来从字符串中检索三个输出。当我想在其他功能中使用返回的值时,顺序会更改。例如:
def parsetrack2(trackstr):
cardnumber, date = trackstr.split('=')
expiryyear = date[0:2]
expirymonth = date[2:4]
return{cardnumber,expiryyear,expirymonth}
当我想将cardnumber
和expiryyear
传递给另一个功能时,有时会更改,而其他时间是正确的?这是为什么?
我应该如何更改它以防止这种变化?
发生的原因是您要返回词典而不是列表/元素。(dicts不能保存元素的顺序,而列表/元组则)
只需更改:
return{cardnumber,epxiryyear,epxirymonth}
to:
return(cardnumber,epxiryyear,epxirymonth)
然后结果顺序将保持不变。
this:
{item_1, item_2, ...}
实际上是一个字面的(不是dict)。一组是无重复的项目集合。因此,返回的项目的顺序是随机的。而是这样做
def func():
return 1, 2, 3
>>> a, b, c = func()
>>> a
1
>>> b
2
>>> c
3