我无法制作在键中带有#符号的字典

时间:2018-11-03 21:44:27

标签: python dictionary

我想制作一个像这样的字典:

example = dict(C# = "o.ooo.")

因为有'#'符号,其余的显示为灰色。

我知道我可以通过以下方法解决此问题:

test = [("C#"), ("o.ooo.")]
example = dict(test)

我想知道是否可以解决我的问题,例如:

example = dict(r(C#) = "o.ooo.") - which obviously doesn't work.

2 个答案:

答案 0 :(得分:2)

就像其他编程语言一样,Python有一些方法可以在程序的不同位置重用相同的代码。其中之一是函数概念(在相同的语言中称为过程),我们可以按以下类型的参数/参数进行分类:

位置功能参数

在此类别中,参数值通过位置分配。因此,如果我们具有以下函数定义

def newLengths(bridge1,bridge2,bridge3):
    #updating lengths

我们这样称呼它newLenghts(1200,1001,1110),因为它位于第二位置,因此参数 bridge2 将采用值 1001 米。

命名/关键字Python功能参数

在这种情况下,我们明确地告诉python我们要分配哪个变量的值,而不是让我们根据位置隐式确定。 现在,对于上一个函数,我们可以执行newLenghts(1200,bridge2 = 1001, 1110)。这种使用命名参数的方式在不同情况下很有用,尤其是对于未指明的参数默认值。 关键字参数的重要部分是,关键字必须是Python中的有效变量标识符才能像这样使用,否则python会认为它是其他内容,例如数字等等。在您的情况下,您尝试使用专门针对行注释的,并且不能组合使用以创建标识符。 因此,我可以说除非您修改Python语法,否则它不能使用井号标签,因此它是变量名称的有效字符。

但是,有一些方法可以创建“ C#”键:

  • 直接使用该字符串作为字典{"C#":"O.OOO."}中的键
  • 创建一个iterable对象,并在调用dict()时传递它

对此进行迭代的最简单方法是使用zip()函数,该函数接受两个列表,并将第一个列表的一个元素与第二个列表的相同位置组合在一起。

keys = ["C#","Java","Python"]
values = ["Book1","Book1","Book0"]
example = dict(zip(keys,values))

答案 1 :(得分:0)

在此处将关键字传递给dict()内置函数是有问题的,因为密钥中的# 被误解为评论的开始。

使用文字语法代替:

example = {"C#": "o.ooo."}