2008-10-07 47 views
20

在PHP我可以說出我的陣列indicies,這樣我可以有類似:Python:我可以列出具有指定索引的列表嗎?

$shows = Array(0 => Array('id' => 1, 'name' => 'Sesaeme Street'), 
       1 => Array('id' => 2, 'name' => 'Dora The Explorer')); 

這是可能在Python?

+2

之前有人評論,是的,這些是我最喜歡的節目2。 :) – UnkwnTech 2008-10-07 12:30:28

回答

42

這聽起來像使用名爲指數的PHP數組非常類似Python字典:

shows = [ 
    {"id": 1, "name": "Sesaeme Street"}, 
    {"id": 2, "name": "Dora The Explorer"}, 
] 

更多關於此見http://docs.python.org/tutorial/datastructures.html#dictionaries

+2

位太複雜。我認爲這個海報需要字跡 – Rory 2008-10-07 15:54:31

+2

這實際上是一個字典列表。 – 2014-06-22 20:46:33

6

是,

a = {"id": 1, "name":"Sesame Street"} 
20

PHP數組實際上是地圖,它相當於Python中的字典。

因此,這是Python當量:

showlist = [{'id':1, 'name':'Sesaeme Street'}, {'id':2, 'name':'Dora the Explorer'}]

排序例如:

from operator import attrgetter 

showlist.sort(key=attrgetter('id')) 

BUT!您提供的例子,一個簡單的數據結構會更好:

shows = {1: 'Sesaeme Street', 2:'Dora the Explorer'} 
5

爲了幫助未來的谷歌搜索,這些通常被稱爲PHP中的關聯數組和Python中的字典。

1

不完全相同的語法,但是有一些字典擴展,其中有關鍵/值對的添加順序。例如。 seqdict

14

@Unkwntech,

你想要什麼,在剛剛發佈的Python 2.6的named tuples形式是可用的。他們允許你這樣做:

import collections 
person = collections.namedtuple('Person', 'id name age') 

me = person(id=1, age=1e15, name='Dan') 
you = person(2, 'Somebody', 31.4159) 

assert me.age == me[2] # can access fields by either name or position 
+0

當然,這可以模擬老版本的Python(例如:http://users.forthnet.gr/ath/chrisgeorgiou/python/TupleStruct.py) – tzot 2008-10-07 15:53:23

0

Python有列表和字典作爲2個獨立的數據結構。 PHP混合成一個。在這種情況下你應該使用字典。

-4

我做了這樣的:

def MyStruct(item1=0, item2=0, item3=0): 
    """Return a new Position tuple.""" 
    class MyStruct(tuple): 
     @property 
     def item1(self): 
      return self[0] 
     @property 
     def item2(self): 
      return self[1] 
     @property 
     def item3(self): 
      return self[2] 
    try: 
     # case where first argument a 3-tuple        
     return MyStruct(item1) 
    except: 
     return MyStruct((item1, item2, item3)) 

我做到了,也更多一些列表,而不是元組複雜,但我不得不重寫setter方法以及吸氣。

不管怎麼說,這允許:

a = MyStruct(1,2,3) 
    print a[0]==a.item1 
相關問題