有没有一种简单的方法可以在php中创建类似关联数组的字典?在PHP我可以做:
> $x='a';
> while($x<d){
> $arr[]['Letter']=$x;
> $x++
> }
解释器自动将新数字添加到空括号“[]”中
所以我可以从b
等访问来自$arr[1]['Letter']
的信件。
有没有办法用python做同样的事?
答案 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'}}
>>>