首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用数字作为变量名,或者使用dict?

如何使用数字作为变量名,或者使用dict?
EN

Stack Overflow用户
提问于 2016-01-20 10:44:49
回答 1查看 106关注 0票数 0

我正在为一个心理学实验编写程序,该程序要求参与者学习新的数字键盘映射。

如果键是字母,那就足够简单了:a=1b=2c=3等。

但是很明显,Python不允许映射到整数。嗯。

部分解决方案可能是使用字典,例如:

代码语言:javascript
复制
newdict = {'1': 9, '2': 8, '3': 7}

但是,参与者将在文本框中键入内容,当他们的条目出现在文本框中时,需要对其进行转换。没有明确的方法来应用newdict['1']调用。

如何实现这种重新映射?

EN

回答 1

Stack Overflow用户

发布于 2016-01-20 11:20:51

您使用字典的直觉很好--这是创建一个字符到另一个字符的映射的一种简单方法。您也可以只使用元组列表(例如:((1, 9), (2, 8), ...))

您没有提到GUI工具包(或者您是否只是在做一个控制台应用程序),因此我将给出一个tkinter示例来说明如何使用字典为每个键设置键绑定。使用元组几乎是相同的。

代码语言:javascript
复制
import tkinter as tk # for python 2 use 'Tkinter'

class Example(tk.Frame):
    keymap = {'1': '9', '2': '8', '3': '7',
              '4': '6', '5': '5', '6': '4',
              '7': '3', '8': '2', '9': '1'}

    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        self.entry = tk.Entry(self, width=20)
        self.entry.pack(fill="x", pady=20, padx=20)

        for old_key, replacement in self.keymap.items():
            self.entry.bind('<KeyPress-%s>' % old_key,
                            lambda event, char=replacement: self.insert(char))

    def insert(self, char):
        self.entry.insert("insert", char)
        return "break"

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34890666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档