Python中的数据结构列表

4
我对Python还不是很熟悉(之前使用的是Java),所以想知道是否有人能够就数据结构设计问题给出一些建议。我需要创建一个具有默认值的数据结构,其样子大致如下:
[
(Name=”name1”,  {id=1, val1=”val1”} ),
(Name=”name2”,  {id=2, val1=”val2”} )
]

即一个元组列表,每个元组由一个字符串值(名称)和一个值字典组成。
我需要的第一个功能是能够添加或覆盖上述数据结构的附加详细信息,例如:
[
(Name=”name2”,  {id=2, val1=new value”} )  ,
(Name=”name2”,  {id=3, val1=”another value”} )  ,
(Name=”name3”,  {id=3, val1=”val3”} )
]

这最终将导致一个最终的数据结构,看起来像这样:
[
(Name=”name1”,  {id=1, val1=”val1”} ),
(Name=”name2”,  {id=2, val1=new value”} )  ,
(Name=”name2”,  {id=3, val1=”another value”} )  ,
(Name=”name3”,  {id=3, val1=”val3”} )
]

我需要的第二个功能是能够根据字典中的id值访问列表中的每个元组,例如:

获取name =“name2”且id =“3”的元组。

有人能给出他们如何在Python中实现这个功能的意见吗?

谢谢!


2
最好使用字典来开始编程,而不是元组列表,因为字典是可变的且可以快速搜索。 - gkusner
这种设计的意义在于什么,其中“Name”和“id”值都不是唯一的? - mykhal
我试图使用数据结构来封装一些需要为单元测试定义的数据库记录。例如,一个基本的单元测试可以为将在单元测试运行之前创建和填充的表定义一些数据。更具体的单元测试可以覆盖默认值并在必要时添加到它们以测试更具体的功能。在这种情况下,“Name”是SQL Alchemy映射类的名称,而字典(带有id等)是将为该类/数据库记录创建的数据。希望这有意义... - user3760434
2个回答

1

命名元组是最接近你所写的,但正如其他人所说,可能有更好的设计适合你想要的。


0
你应该尝试使用字典。
字典是可变的容器类型,可以存储任意数量的Python对象,包括其他容器类型。字典由键和它们对应的值组成的键值对(item)构成。
Python字典也被称为关联数组或哈希表。字典的一般语法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

你也可以用以下的方式创建字典:
dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };

每个键和它的值之间用冒号(:)分隔,项之间用逗号分隔,并且整个字典都包含在花括号中。没有任何项的空字典只需用两个花括号表示,如下所示:{}。
字典中的键是唯一的,而值可能不是唯一的。字典的值可以是任何类型,但键必须是不可变数据类型,如字符串、数字或元组。
访问字典中的值:
为了访问字典元素,您可以使用熟悉的方括号以及键来获取它的值。以下是一个简单的例子:
#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
When the above code is executed, it produces the following result:

dict['Name']:  Zara
dict['Age']:  7

来源:http://www.tutorialspoint.com/python/python_dictionary.htm


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接