首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:我可以有一个带有命名索引的列表吗?

Python:我可以有一个带有命名索引的列表吗?
EN

Stack Overflow用户
提问于 2008-10-07 12:25:25
回答 8查看 104.5K关注 0票数 45

在PHP中,我可以命名我的数组索引,这样我就可以拥有如下内容:

代码语言:javascript
复制
$shows = Array(0 => Array('id' => 1, 'name' => 'Sesame Street'), 
               1 => Array('id' => 2, 'name' => 'Dora The Explorer'));

这在Python中是可能的吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-10-07 12:29:58

这听起来像是使用命名索引的PHP数组非常类似于python字典:

代码语言:javascript
复制
shows = [
  {"id": 1, "name": "Sesaeme Street"},
  {"id": 2, "name": "Dora The Explorer"},
]

有关这方面的更多信息,请参阅http://docs.python.org/tutorial/datastructures.html#dictionaries

票数 62
EN

Stack Overflow用户

发布于 2008-10-07 12:33:19

PHP数组实际上是映射,相当于Python中的dict。

因此,这是Python的等价物:

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

排序示例:

代码语言:javascript
复制
from operator import attrgetter

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

但!使用您提供的示例,更简单的数据结构会更好:

代码语言:javascript
复制
shows = {1: 'Sesame Street', 2:'Dora the Explorer'}
票数 23
EN

Stack Overflow用户

发布于 2008-10-07 14:21:44

@Unkwntech,

您需要的内容可以在刚刚发布的Python2.6中以named tuples的形式获得。它们允许您执行以下操作:

代码语言:javascript
复制
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
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/178199

复制
相关文章

相似问题

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