137
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi có một từ điển trong Python, và những gì tôi muốn làm là nhận được một số giá trị từ nó làm danh sách, nhưng tôi không biết liệu điều này có được hỗ trợ bởi việc thực hiện hay không.
myDictionary.get['firstKey'] # works fine
myDictionary.get['firstKey','secondKey']
# gives me a KeyError -> OK, get is not defined for multiple keys
myDictionary['firstKey','secondKey'] # doesn't work either
Có cách nào tôi có thể đạt được điều này không? Trong ví dụ của tôi, nó có vẻ dễ dàng, nhưng giả sử tôi có từ điển gồm 20 mục và tôi muốn nhận 5 khóa. Có cách nào khác ngoài việc làm như sau không?
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
Wovano
3,4755 huy hiệu vàng20 Huy hiệu bạc43 Huy hiệu đồng5 gold badges20 silver badges43 bronze badges
Đã hỏi ngày 13 tháng 6 năm 2014 lúc 11:18Jun 13, 2014 at 11:18
2
Đã tồn tại một chức năng cho việc này:
from operator import itemgetter
my_dict = {x: x**2 for x in range[10]}
itemgetter[1, 3, 2, 5][my_dict]
#>>> [1, 9, 4, 25]
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
6 sẽ trả về một tuple nếu có nhiều hơn một đối số được thông qua. Để chuyển danh sách cho myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
6, hãy sử dụngitemgetter[*wanted_keys][my_dict]
Hãy nhớ rằng
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
6 không bọc đầu ra của nó trong một bộ dữ liệu khi chỉ yêu cầu một phím và không hỗ trợ các phím không được yêu cầu.Đã trả lời ngày 13 tháng 6 năm 2014 lúc 11:42Jun 13, 2014 at 11:42
VeedracveedracVeedrac
55,9K14 Huy hiệu vàng109 Huy hiệu bạc166 Huy hiệu Đồng14 gold badges109 silver badges166 bronze badges
10
Sử dụng vòng lặp
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
9:keys = ['firstKey', 'secondKey', 'thirdKey']
for key in keys:
myDictionary.get[key]
hoặc một danh sách hiểu:
[myDictionary.get[key] for key in keys]
Đã trả lời ngày 13 tháng 6 năm 2014 lúc 11:20Jun 13, 2014 at 11:20
Máy tínhFellowComputerfellowComputerFellow
11.2K12 Huy hiệu vàng48 Huy hiệu bạc61 Huy hiệu đồng12 gold badges48 silver badges61 bronze badges
5
Tôi muốn đề xuất chức năng
from operator import itemgetter
my_dict = {x: x**2 for x in range[10]}
itemgetter[1, 3, 2, 5][my_dict]
#>>> [1, 9, 4, 25]
0 rất hữu ích, cho phép một chức năng vận hành phần tử khôn ngoan trong danh sách:mydictionary = {'a': 'apple', 'b': 'bear', 'c': 'castle'}
keys = ['b', 'c']
values = list[ map[mydictionary.get, keys] ]
# values = ['bear', 'castle']
Đã trả lời ngày 18 tháng 9 năm 2019 lúc 20:08Sep 18, 2019 at 20:08
Scotttscotttscottt
6995 Huy hiệu bạc7 Huy hiệu đồng5 silver badges7 bronze badges
3
Bạn có thể sử dụng
from operator import itemgetter
my_dict = {x: x**2 for x in range[10]}
itemgetter[1, 3, 2, 5][my_dict]
#>>> [1, 9, 4, 25]
1 từ Pydash:from pydash import at
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_list = at[my_dict, 'a', 'b']
my_list == [1, 2]
Đã trả lời ngày 15 tháng 12 năm 2016 lúc 9:47Dec 15, 2016 at 9:47
Bustawinbustawinbustawin
6347 Huy hiệu bạc11 Huy hiệu đồng7 silver badges11 bronze badges
2
Như tôi thấy không có câu trả lời tương tự ở đây - đáng để chỉ ra rằng với việc sử dụng sự hiểu biết [danh sách / máy phát], bạn có thể giải nén nhiều giá trị đó và gán chúng cho nhiều biến trong một dòng mã duy nhất:
first_val, second_val = [myDict.get[key] for key in [first_key, second_key]]
Đã trả lời ngày 1 tháng 1 năm 2020 lúc 17:51Jan 1, 2020 at 17:51
EpionepionEpion
4483 Huy hiệu bạc7 Huy hiệu đồng3 silver badges7 bronze badges
Nếu bạn đã cài đặt
from operator import itemgetter
my_dict = {x: x**2 for x in range[10]}
itemgetter[1, 3, 2, 5][my_dict]
#>>> [1, 9, 4, 25]
2, bạn có thể biến nó thành một chuỗi với các phím làm chỉ mục. Vì vậy, một cái gì đó giống nhưimport pandas as pd
s = pd.Series[my_dict]
s[['key1', 'key3', 'key2']]
Đã trả lời ngày 4 tháng 10 năm 2019 lúc 7:07Oct 4, 2019 at 7:07
Tôi nghĩ rằng việc hiểu danh sách là một trong những cách sạch nhất mà không cần bất kỳ nhập khẩu bổ sung nào:
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
0Hoặc nếu bạn muốn các giá trị làm biến riêng lẻ thì hãy sử dụng nhiều phân loại:
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
1Đã trả lời ngày 30 tháng 11 năm 2020 lúc 10:39Nov 30, 2020 at 10:39
Andy Brownandy BrownAndy Brown
10,8K2 Huy hiệu vàng38 Huy hiệu bạc56 Huy hiệu Đồng2 gold badges38 silver badges56 bronze badges
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
2Đã trả lời ngày 3 tháng 2 lúc 7:38Feb 3 at 7:38
Nếu bạn muốn giữ lại ánh xạ của các giá trị cho các khóa, bạn nên sử dụng sự hiểu biết chính thống thay thế:
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
3Đã trả lời ngày 3 tháng 9 lúc 5:52Sep 3 at 5:52
Tschlichtschlichtschlich
331 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges
Nếu các phím dự phòng không quá nhiều, bạn có thể làm điều gì đó như thế này
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
4
Đã trả lời ngày 21 tháng 8 năm 2018 lúc 20:00Aug 21, 2018 at 20:00
myDictionary.get['firstKey']
myDictionary.get['secondKey']
myDictionary.get['thirdKey']
myDictionary.get['fourthKey']
myDictionary.get['fifthKey']
5Đã trả lời ngày 4 tháng 2 lúc 6:20Feb 4 at 6:20