#python字典根據(jù)值value返回鍵key? ? ? ? ——by ospwin? ? 2020-03-24
#思路:將字典的key和value分別轉(zhuǎn)為key列表和value列表单鹿,根據(jù)value列表的元素索引值找出對應(yīng)key列表的值。
dt={"neutral":0,"sadness":0,"disgust":0,"anger":0,"surprise":99.999,"fear":0,"happiness":0}? ? #創(chuàng)建dt字典
print(dt)
dt_val_list=list(dt.values())? #字典的值轉(zhuǎn)為列表腋寨,這條才正確
print(dt_val_list)
val_max=max(dt_val_list)
dt_val_index=dt_val_list.index(val_max)? ? #列表的方法index()獲得列表元素的索引號
print('列表dt_val_list最大值的序列是:',dt_val_index)
dt_key_list=list(dt.keys())? #字典中的key轉(zhuǎn)換為列表,這條才正確
print(dt_key_list)
dt_key=dt_key_list[dt_val_index]? ? #根據(jù)索引號取得key列表的元素(對應(yīng)字典的key)
print('字典value的索引值對應(yīng)的字典key:',dt_key)
##思考:如果是字典的值value有相同的俗壹,如何取得對應(yīng)的字典的鍵key呢?
#以下方法很簡練很好摘錄自:Python中按值來獲取指定的鍵_python_腳本之家https://www.jb51.net/article/157266.htm
#Python字典中的鍵是唯一的略就,但不同的鍵可以對應(yīng)同樣的值,比如說uid匠抗,可以是1001。id同樣可以是1001污抬。這樣的話通過值來獲取指定的鍵汞贸,就不止一個!而且也并不太好處理印机。這里同樣提供兩種思路來處理矢腻。
#方法一:
dct = {'Name': 'Alice', 'Age': 18, 'uid': 1001, 'id': 1001}
def get_key1(dct, value):
? ? return list(filter(lambda k:dct[k] == value, dct))
get_key1_var=get_key1(dct, 1001)
print(get_key1_var)
#方法二:
dct= {'Name': 'Alice', 'Age': 18, 'uid': 1001, 'id': 1001}
def get_key2(dct, value):
? ? return [k for (k,v) in dct.items() if v == value]
get_key2_var=get_key2(dct, 1001)
print(get_key2_var)
get_key2_var=get_key2(dct, 1000)
print(get_key2_var)
#上面的兩種方法可以很方便高效的來處理字典中按值來找鍵的問題!