在python字典中自动创建下一个键

时间:2009-09-27 07:50:56

标签: python

有没有一种简单的方法可以在php中创建类似关联数组的字典?在PHP我可以做:

> $x='a';
> while($x<d){
>     $arr[]['Letter']=$x;
>      $x++
>     }

解释器自动将新数字添加到空括号“[]”中 所以我可以从b等访问来自$arr[1]['Letter']的信件。

有没有办法用python做同样的事?

4 个答案:

答案 0 :(得分:3)

编辑:我很蠢。当然,有一种方法可以在Python中执行此操作。像这样:

result = [{'Letter': chr(i+97)} for i in range(26)]

那会给你一个清单。哪个可以用数字索引。 因此result[1]['Letter']将为您提供'b'

答案 1 :(得分:3)

在Python中,空括号索引在语法上是无效的,但是你可以设想一个类,例如[None]作为一个信号,用于添加一个带有dict的键作为其值,并使用递增的整数作为键。在我努力编写这样一个课程之前,我很想了解你正试图解决的真正问题,例如: collections.defaultdict无法解决。

答案 2 :(得分:2)

在python列表和词典中是不同的类型。 PHP有一种类型来统治它们所有的关联数组。

我认为你上面要做的事情转化为python中的字典列表,就像这样

x = [ dict(Letter=chr(i)) for i in range(ord('a'),ord('f')) ]

如果您在口译员中尝试此操作

>>> x = [ dict(Letter=chr(i)) for i in range(ord('a'),ord('f')) ]
>>> x
[{'Letter': 'a'}, {'Letter': 'b'}, {'Letter': 'c'}, {'Letter': 'd'}, {'Letter': 'e'}]
>>> x[0]
{'Letter': 'a'}
>>> x[1]
{'Letter': 'b'}
>>> x[1]['Letter']
'b'
>>>

或者,如果您更喜欢在没有列表理解的情况下完全写出来

x = []
for c in range(ord('a'),ord('f')):
    d = { 'Letter': chr(c) }
    x.append(d)

答案 3 :(得分:0)

已经提到Python默认不支持它。

您可以通过使用字典的长度来实现这种效果,如下所示:

>>> arr = {'letter':{1:'a'}}
>>> arr
{'letter': {1: 'a'}}
>>> arr['letter'][len(arr['letter'])+1] = 'b'
>>> arr['letter'][len(arr['letter'])+1] = 'c'
>>> arr['letter'][len(arr['letter'])+1] = 'd'
>>> arr
{'letter': {1: 'a', 2: 'b', 3: 'c', 4: 'd'}}
>>>