将名称与嵌套列表关联

2024-04-29 15:11:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我被困在如何将附加信息添加到列表叶的最低级别。我目前正在使用:

fruits = ['tomato', 'apple', 'watermelon']

fruit_detail = []

for fruit in fruits:
    fruit_detail.append([[fruit, [fruit + ' is delicious']]])

这给了我:

[[['tomato', ['tomato is delicious']]], [['apple', ['apple is delicious']]], [['watermelon', ['watermelon is delicious']]]]

稍后,我将尝试在列表中添加更多详细信息:

fruit_detail[tomato].append('red')

我收到了错误

NameError: name 'tomato' is not defined

有没有可能达到我的目的


Tags: in信息apple列表foris详细信息级别
1条回答
网友
1楼 · 发布于 2024-04-29 15:11:27

您应该改用字典

fruit_detail = {}

for fruit in fruits:
    fruit_detail[fruit] = [fruit + ' is delicious']

现在,您可以通过水果名称来确定每个列表的地址:

>>> fruits = ['tomato', 'apple', 'watermelon']
>>> fruit_detail = {}
>>> for fruit in fruits:
...     fruit_detail[fruit] = [fruit + ' is delicious']
... 
>>> fruit_detail['tomato']
['tomato is delicious']
>>> fruit_detail['tomato'].append('red')
>>> fruit_detail['tomato']
['tomato is delicious', 'red']

您的代码使用了不必要的额外列表,但要对简单列表执行相同的操作:

fruit_detail = []

for fruit in fruits:
    fruit_detail.append([fruit, [fruit + ' is delicious']])

您必须先扫描整个列表,甚至找到匹配的列表:

for fruit_name, fruit_info in fruit_detail:
    if fruit_name == 'tomato':
        fruit_info.append('red')

这是几乎没有效率或容易处理。添加的项目越多,搜索所需的时间就越长。另一方面,字典在查找与键相关联的值时效率要高得多

有关更多信息,请参见Dictionaries section of the Python tutorial

相关问题 更多 >