Python中带字符串索引的数组

86 投票
3 回答
225420 浏览
提问于 2025-04-16 04:26

在Python中,可以用字符串作为数组的索引吗?

比如说:

myArray = []
myArray["john"] = "johns value"
myArray["jeff"] = "jeffs value"
print myArray["john"]

3 个回答

0

这些回答完全没有理解构建一个用键索引的字典数组的意思,比如:

按乐队名称列出有演出的乐队:

concerts = []

concerts['bandname1'] = {"venue": city stadium, "State": state name, "Date": date value, "Time": event time }

concerts['bandname2'] = {"venue": different city stadium, "State": another state name, "Date": some other date value, "Time": event time }

这是不可能的。Python不允许用字符串作为索引,只能用整数或者切片。

5

更好的是,可以试试 OrderedDict(假设你想要的东西像列表)。它比普通的字典更像列表,因为它的键是有顺序的,就像列表里的元素有顺序一样。而普通的字典,键的顺序是随意的。

需要注意的是,这个功能在Python 3和2.7中都可以使用。如果你想在更早版本的Python中使用,可以找到可以安装的模块来实现这个功能。

184

你想要的东西叫做关联数组。在Python中,这种东西叫做字典

字典在其他编程语言中有时被称为“关联记忆”或“关联数组”。和用数字范围来索引的序列不同,字典是通过键来索引的,这些键可以是任何不可变类型;字符串和数字总是可以作为键。

myDict = {}
myDict["john"] = "johns value"
myDict["jeff"] = "jeffs value"

创建上面字典的另一种方法:

myDict = {"john": "johns value", "jeff": "jeffs value"}

访问值:

print(myDict["jeff"]) # => "jeffs value"

获取键(在Python 2中):

print(myDict.keys()) # => ["john", "jeff"]

在Python 3中,你会得到一个dict_keys,这是一种视图,效率更高一点(详细信息请查看视图文档PEP 3106)。

print(myDict.keys()) # => dict_keys(['john', 'jeff']) 

如果你想了解Python字典的内部工作原理,我推荐这个大约25分钟的视频:https://www.youtube.com/watch?v=C4Kc8xzcA68。它叫做“强大的字典”。

撰写回答