我有一个单词HACK
的所有组合的列表,如下所示:
lista = ['H', 'A', 'C', 'K', 'HA', 'HC', 'HK', 'AC', 'AK', 'CK']
我尝试使用以下方法对上述内容进行排序:
lista.sort(lambda x,y:cmp(len(x),len(y)))
给了我相同的结果。
如何按长度和字母顺序排序。
预期输出:
['A', 'C', 'H', 'K', 'AC', 'AH', 'AK', 'CH', 'CK', 'HK']
更新:
from itertools import combinations
inp = "HACK 2".split(" ")
lista = []
for i in range(1,int(inp[1])+1):
for item in list(combinations(inp[0],i)):
lista.append("".join(item))
lista = sorted(lista, key=lambda x: (len(x), x))
print lista
#Output
['A', 'C', 'H', 'K', 'AC', 'AK', 'CK', 'HA', 'HC', 'HK']
#Expected Output
['A', 'C', 'H', 'K', 'AC', 'AH', 'AK', 'CH', 'CK', 'HK']
我如何迭代这些组合也有什么问题?
答案 0 :(得分:1)
list.sort
,sorted
接受可选的关键字参数<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.5"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:orientation="horizontal"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="15dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4.75"
android:layout_gravity="center"
android:padding="5dp"
android:background="@drawable/bg_rounded_button"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.7"
android:src="@drawable/iv_user_ph" />
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3"
android:background="@null"
android:gravity="center"
android:textSize="14dp"
android:textStyle="bold"
android:text="Test" />
</LinearLayout>
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4.75"
android:layout_gravity="center"
android:padding="5dp"
android:background="@drawable/bg_rounded_button"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.7"
android:src="@drawable/iv_user_ph" />
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3"
android:background="@null"
android:gravity="center"
android:textSize="14dp"
android:textStyle="bold"
android:text="Test" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:paddingBottom="15dp"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4.75"
android:layout_gravity="center"
android:padding="5dp"
android:background="@drawable/bg_rounded_button"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.7"
android:src="@drawable/iv_user_ph" />
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3"
android:background="@null"
android:gravity="center"
android:textSize="14dp"
android:textStyle="bold"
android:text="Test" />
</LinearLayout>
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4.75"
android:layout_gravity="center"
android:padding="5dp"
android:background="@drawable/bg_rounded_button"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.7"
android:src="@drawable/iv_user_ph" />
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3"
android:background="@null"
android:gravity="center"
android:textSize="14dp"
android:textStyle="bold"
android:text="Test" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
。 key函数的返回值用于比较元素而不是元素本身。
对于您的情况,您可以使用返回元组的键函数(长度,字符串本身):
key
答案 1 :(得分:1)
您不仅要对 <View
android:id="@+id/view_line"
android:layout_width="match_parent" //change here
android:layout_height="2dp"
android:layout_marginTop="20dp"
android:layout_toRightOf="@+id/img_exercise"
android:background="@color/color_black" />
列表进行排序,还要对其中的所有字符串进行排序。所以
lista