Tôi có từ điển
# lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
4Tôi cần phải sắp xếp từ điển này đầu tiên bằng số, sau đó trong đó, theo thứ tự bảng chữ cái. Nếu 2 mục có cùng một khóa số, chúng cần được sắp xếp theo thứ tự bảng chữ cái.
Đầu ra của điều này phải là
# lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
5Tôi đã thử sử dụng lambda, danh sách hiểu, v.v. nhưng dường như tôi không thể khiến chúng sắp xếp chính xác.
Bhargav Rao
47.8K27 Huy hiệu vàng123 Huy hiệu bạc138 Huy hiệu Đồng27 gold badges123 silver badges138 bronze badges
Đã hỏi ngày 9 tháng 12 năm 2015 lúc 4:04Dec 9, 2015 at 4:04
Sử dụng
# lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
6 với hàm khóa [thứ tự theo giá trị [# lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
7] trước tiên, sau đó là khóa # lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
8]:>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}
>>> sorted[d, key=lambda k: [d[k], k]]
['Bob', 'Alex', 'Bill', 'Charles']
Đã trả lời ngày 9 tháng 12 năm 2015 lúc 4:11Dec 9, 2015 at 4:11
Falsetrufalsetrufalsetru
346K60 Huy hiệu vàng691 Huy hiệu bạc614 Huy hiệu đồng60 gold badges691 silver badges614 bronze badges
3
Sắp xếp trên các mục của từ điển [là bộ dữ liệu] bằng cách sử dụng
# lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
9. Bạn có thể chỉ định phím sắp xếp theo giá trị của từ điển và sau đó là các khóa của nó:>>> d = {'Bill': 4, 'Alex' : 4, 'Bob' : 3, "Charles": 7}
>>> sorted[d.items[], key=lambda x:[x[1],x[0]]]
[['Bob', 3], ['Alex', 4], ['Bill', 4], ['Charles', 7]]
>>> [t[0] for t in sorted[d.items[], key=lambda x:[x[1],x[0]]]]
['Bob', 'Alex', 'Bill', 'Charles']
Đã trả lời ngày 9 tháng 12 năm 2015 lúc 4:08Dec 9, 2015 at 4:08
Mhawkemhawkemhawke
82.1K9 Huy hiệu vàng113 Huy hiệu bạc135 Huy hiệu Đồng9 gold badges113 silver badges135 bronze badges
Sử dụng một lambda làm chức năng sắp xếp của bạn.
# lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
Produces:
['Phil Jordan', ['777886666', 'F', 59.5]]
['Willy Smith Jr.', ['222114444', 'C', 77.55]]
['John Adams', ['111223333', 'A', 91.0]]
Nhân tiện, nếu bạn kết thúc với nhiều mục chia sẻ cùng một giá trị sắp xếp, bạn có thể xây dựng một loại hỗn hợp [thứ cấp, cấp ba, v.v.]. Lambda của bạn chỉ nên trả lại một tuple:
['Phil Jordan', ['777886666', 'F', 59.5]]
['Willy Smith Jr.', ['222114444', 'C', 77.55]]
['John Adams', ['111223333', 'A', 91.0]]
0, sẽ sắp xếp theo giá trị cuối cùng đó, và sau đó theo tên nếu nhiều giá trị bằng nhau.Đây là không có Lambda:
def key_func[key_value_tuple]:
name = key_value_tuple[0]
long_str_num, a_to_f, number = key_value_tuple[1]
return [number, name]
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=key_func]:
print[key, value]
Chỉnh sửa: Đã thêm tùy chọn không phải Lambda.
Trong Python, việc sắp xếp một danh sách các từ điển với phương thức
['Phil Jordan', ['777886666', 'F', 59.5]]
['Willy Smith Jr.', ['222114444', 'C', 77.55]]
['John Adams', ['111223333', 'A', 91.0]]
1 hoặc hàm # lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
9 làm tăng lỗi ['Phil Jordan', ['777886666', 'F', 59.5]]
['Willy Smith Jr.', ['222114444', 'C', 77.55]]
['John Adams', ['111223333', 'A', 91.0]]
3 theo mặc định.Bằng cách chỉ định tham số
['Phil Jordan', ['777886666', 'F', 59.5]]
['Willy Smith Jr.', ['222114444', 'C', 77.55]]
['John Adams', ['111223333', 'A', 91.0]]
4 của ['Phil Jordan', ['777886666', 'F', 59.5]]
['Willy Smith Jr.', ['222114444', 'C', 77.55]]
['John Adams', ['111223333', 'A', 91.0]]
1 hoặc # lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
9, bạn có thể sắp xếp một danh sách các từ điển theo giá trị của khóa cụ thể.Bài viết này mô tả các nội dung sau đây.
- Sắp xếp danh sách các từ điển làm tăng lỗi theo mặc định
- Chỉ định biểu thức Lambda cho tham số
4['Phil Jordan', ['777886666', 'F', 59.5]] ['Willy Smith Jr.', ['222114444', 'C', 77.55]] ['John Adams', ['111223333', 'A', 91.0]]
- Chỉ định
8 cho tham số['Phil Jordan', ['777886666', 'F', 59.5]] ['Willy Smith Jr.', ['222114444', 'C', 77.55]] ['John Adams', ['111223333', 'A', 91.0]]
4['Phil Jordan', ['777886666', 'F', 59.5]] ['Willy Smith Jr.', ['222114444', 'C', 77.55]] ['John Adams', ['111223333', 'A', 91.0]]
- Sắp xếp theo nhiều phím
0,def key_func[key_value_tuple]: name = key_value_tuple[0] long_str_num, a_to_f, number = key_value_tuple[1] return [number, name] d = { 'John Adams': ['111223333', 'A', 91.0], 'Willy Smith Jr.': ['222114444', 'C', 77.55], 'Phil Jordan': ['777886666', 'F', 59.5] } for key, value in sorted[d.items[], key=key_func]: print[key, value]
1 cho một danh sách các từ điểndef key_func[key_value_tuple]: name = key_value_tuple[0] long_str_num, a_to_f, number = key_value_tuple[1] return [number, name] d = { 'John Adams': ['111223333', 'A', 91.0], 'Willy Smith Jr.': ['222114444', 'C', 77.55], 'Phil Jordan': ['777886666', 'F', 59.5] } for key, value in sorted[d.items[], key=key_func]: print[key, value]
Như đã đề cập ở trên, các so sánh với
def key_func[key_value_tuple]:
name = key_value_tuple[0]
long_str_num, a_to_f, number = key_value_tuple[1]
return [number, name]
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=key_func]:
print[key, value]
6 hoặc def key_func[key_value_tuple]:
name = key_value_tuple[0]
long_str_num, a_to_f, number = key_value_tuple[1]
return [number, name]
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=key_func]:
print[key, value]
7 không được hỗ trợ cho từ điển def key_func[key_value_tuple]:
name = key_value_tuple[0]
long_str_num, a_to_f, number = key_value_tuple[1]
return [number, name]
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=key_func]:
print[key, value]
2, do đó, chuyển danh sách các từ điển đến def key_func[key_value_tuple]:
name = key_value_tuple[0]
long_str_num, a_to_f, number = key_value_tuple[1]
return [number, name]
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=key_func]:
print[key, value]
0 hoặc def key_func[key_value_tuple]:
name = key_value_tuple[0]
long_str_num, a_to_f, number = key_value_tuple[1]
return [number, name]
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=key_func]:
print[key, value]
1 gây ra lỗi.- Như với
9 và# lambda r: r[1][2] # r == ['John Adams', ['111223333', 'A', 91.0]] # r[1] == ['111223333', 'A', 91.0] # r[1][2] == 91.0 # d = { 'John Adams': ['111223333', 'A', 91.0], 'Willy Smith Jr.': ['222114444', 'C', 77.55], 'Phil Jordan': ['777886666', 'F', 59.5] } for key, value in sorted[d.items[], key=lambda r: r[1][2]]: print[key, value]
1, bạn cũng có thể chỉ định tham số['Phil Jordan', ['777886666', 'F', 59.5]] ['Willy Smith Jr.', ['222114444', 'C', 77.55]] ['John Adams', ['111223333', 'A', 91.0]]
4 trong['Phil Jordan', ['777886666', 'F', 59.5]] ['Willy Smith Jr.', ['222114444', 'C', 77.55]] ['John Adams', ['111223333', 'A', 91.0]]
0 vàdef key_func[key_value_tuple]: name = key_value_tuple[0] long_str_num, a_to_f, number = key_value_tuple[1] return [number, name] d = { 'John Adams': ['111223333', 'A', 91.0], 'Willy Smith Jr.': ['222114444', 'C', 77.55], 'Phil Jordan': ['777886666', 'F', 59.5] } for key, value in sorted[d.items[], key=key_func]: print[key, value]
1.def key_func[key_value_tuple]: name = key_value_tuple[0] long_str_num, a_to_f, number = key_value_tuple[1] return [number, name] d = { 'John Adams': ['111223333', 'A', 91.0], 'Willy Smith Jr.': ['222114444', 'C', 77.55], 'Phil Jordan': ['777886666', 'F', 59.5] } for key, value in sorted[d.items[], key=key_func]: print[key, value]
import pprint
l = [{'Name': 'Alice', 'Age': 40, 'Point': 80},
{'Name': 'Bob', 'Age': 20},
{'Name': 'Charlie', 'Age': 30, 'Point': 70}]
Sắp xếp danh sách các từ điển làm tăng lỗi theo mặc định
Sắp xếp danh sách các từ điển [
def key_func[key_value_tuple]:
name = key_value_tuple[0]
long_str_num, a_to_f, number = key_value_tuple[1]
return [number, name]
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=key_func]:
print[key, value]
2] bằng phương thức ['Phil Jordan', ['777886666', 'F', 59.5]]
['Willy Smith Jr.', ['222114444', 'C', 77.55]]
['John Adams', ['111223333', 'A', 91.0]]
1 hoặc hàm # lambda r: r[1][2]
# r == ['John Adams', ['111223333', 'A', 91.0]]
# r[1] == ['111223333', 'A', 91.0]
# r[1][2] == 91.0
#
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=lambda r: r[1][2]]:
print[key, value]
9 làm tăng lỗi ['Phil Jordan', ['777886666', 'F', 59.5]]
['Willy Smith Jr.', ['222114444', 'C', 77.55]]
['John Adams', ['111223333', 'A', 91.0]]
3 theo mặc định.Điều này là do từ điển không hỗ trợ so sánh với
def key_func[key_value_tuple]:
name = key_value_tuple[0]
long_str_num, a_to_f, number = key_value_tuple[1]
return [number, name]
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=key_func]:
print[key, value]
6, def key_func[key_value_tuple]:
name = key_value_tuple[0]
long_str_num, a_to_f, number = key_value_tuple[1]
return [number, name]
d = {
'John Adams': ['111223333', 'A', 91.0],
'Willy Smith Jr.': ['222114444', 'C', 77.55],
'Phil Jordan': ['777886666', 'F', 59.5]
}
for key, value in sorted[d.items[], key=key_func]:
print[key, value]
7, v.v.# sorted[l]
# TypeError: '