我已获得以下代码:
cases = []
for file in files:
# Get value from files and write to data
data = [ id, b, c, d, e, f, g, h, i, j, k ]
# Append the values to the data list
cases.append(data)
# Sort the cases descending
cases.sort(reverse=True)
运行for
循环后,cases
列表如下所示:
cases = [ ['id', val, val], ['id', val, val], ['id', val, val] ] etc.
id
的价值类似于' 600' 900',' 1009'' 1009a'或者' 1010'我想要降序排序。
目前' 1009a'在列表的顶部,而我希望它在' 1009'之间。和' 1010'。这可能与' 1009a'被解析为unicode
而其他值被解析为long
。调试器也证实了这一点。
在编写id
列表时,我尝试使用unicode(id)
将data
字段转换为unicode,但这也没有给出所需的结果。排序cases
后,输出将从' 999'开始,直到达到' 600'然后将从' 1130'开始然后跑到' 1000'。而不是从' 1130'开始然后跑到' 600'。这就是我想要的,用' 1009a'介于' 1009'和' 1010'。
答案 0 :(得分:4)
如果您要比较包含数字的字符串,则按字母顺序排序,即不考虑该数字的位数。您必须先将这些转换为.header-unit {
height: 80px;
border: 2px solid #000;
border-right: none;
border-left: none;
margin-top: 50px;
position: relative;
padding: 20px;
}
#video-container {
position: absolute;
}
#video-container {
top: 0%;
left: 0%;
height: 100%;
width: 100%;
overflow: hidden;
/* additional */
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}
#video-container p {
position: absolute;
z-index: 1;
font-size: 50px;
color: black; /* for the sake of demonstration */
/* additional */
margin: auto;
}
video {
position: relative;
z-index: 0;
}
video.fillWidth {
width: 100%;
}
,但使用<div class="header-unit">
<div id="video-container">
<p>Next Event: December 10th</p>
<video autoplay loop class="fillWidth">
<source src="https://coverr.co/s3/mp4/Into_the_Wild.mp4"/>
</video>
</div>
</div>
后缀会很棘手。您可以使用正则表达式来分隔数字和后缀:
int
将此应用于您的示例,您可能需要这个(未经过测试):
a/b
答案 1 :(得分:0)
您的问题是,当您在unicode
时,您与第一个值进行比较时确实有9>1
,因此900>1000
。
您需要做的是为所有id
字段编写前导零,以便900
变为0900
,现在小于1000
。您可以使用这段代码执行此操作(尽管可能有更简洁的方法):
id = str(id).zfill(5)
请注意,如果str()
已经是字符串,则您不需要id
位。这里zfill(5)
将在字符串的左边添加零,直到字符串的长度为5。