我不知道您是如何创建 Listbox 但您可以将您的列表转换为
{'Anderson': '337', 'Stuttgart':'47' ...}
然后使用Anderson作为键获取337。
data = {'337':'Anderson', '47':'Stuttgart'}
data2 = {val:key for key,val in data.items()}
print(data2)
print(data2['Anderson'])
如果您在 dict 中多次使用相同的名称,则转换可能会删除一些值,然后使用 list/dict 理解更好地过滤原始 dict
keys = [key for key,val in data.items() if val == 'Anderson']
print(keys)
但是,如果您多次使用相同的名称,那么您会得到很多键,您将不知道该选择哪一个。最好使用 (key,values) 创建列表,然后使用 selection[0] 作为此列表中的索引
data = {'337':'Anderson', '47':'Stuttgart'}
data2 = [(key, val) for key,val in data.items()]
selection = [0]
print( data2[ selection[0] ] )
最少的工作代码
import tkinter as tk
# --- functions ---
def on_click(event):
widget = event.widget
sel = widget.curselection()
val = widget.get(sel[0])
print('dict2:', dict2[val])
print('list2:', list2[sel[0]])
print('---')
# --- main ---
data = {'337': 'Anderson', '47': 'Stuttgart'}
dict2 = {val:key for key, val in data.items()}
list2 = list(data.items())
root = tk.Tk()
listbox = tk.Listbox(root)
listbox.pack()
listbox.insert('end', *data.values())
listbox.bind('<Double-Button-1>', on_click)
root.mainloop()
结果:
dict2: 47
list2: ('47', 'Stuttgart')
---
dict2: 337
list2: ('337', 'Anderson')
---