你可以将
items
子列表存储在一个字典中,以它们的第一个元素作为索引。
from random import shuffle
items = [
["e",None,None],
["pork","pork.png","meat"],
["beef","b.png","meat"],
["cheese","c.png","not"],
]
items_dict = {u[0]: u for u in items}
items_list = ["e","beef","pork","beef"]
shuffle(items_list)
for s in items_list:
print(s, items_dict[s])
输出
beef ['beef', 'b.png', 'meat']
e ['e', None, None]
beef ['beef', 'b.png', 'meat']
pork ['pork', 'pork.png', 'meat']
打印第二个项目(即PNG):
for s in items_list:
print(s, items_dict[s][1])
输出
e None
beef b.png
beef b.png
pork pork.png
这是相当高效的,因为没有创建新的列表:在items_dict
中的列表是与items
中的相同列表对象。因此,如果您希望,可以通过items
或items_dict
来改变那些列表。
items_dict["cheese"].append("cheddar")
print(items[3])
items[0][2] = "something"
print(items_dict["e"])
输出
['cheese', 'c.png', 'not', 'cheddar']
['e', None, 'something']
你不需要使用`items_dict`,但是如果`items`很大,另一个选择就是使用嵌套的`for`循环,这会变得非常低效。
for s in items_list:
for seq in items:
if seq[0] == s:
print(s, seq)
break
输出
beef ['beef', 'b.png', 'meat']
e ['e', None, None]
beef ['beef', 'b.png', 'meat']
pork ['pork', 'pork.png', 'meat']