如果我有一个列表的东西,我如何将项目与这些东西相关联?蟒蛇

时间:2011-11-03 23:55:35

标签: python

所以我有一个将在今晚晚些时候到期的任务,我坚持这个定义。我所拥有的是随机术语列表:

['i', 'am', 'a', 'brown', 'cow']

我想对此列表做些什么是将每个术语与值/术语相关联:

[['i', ['term']], ['am', ['term']], ['a', ['term']], ['brown', ['term']], ['cow', ['term']]]

我对如何开始这个问题的想法是使用for循环并在每个关键术语后附加术语,并以某种方式尝试分离每一对。

2 个答案:

答案 0 :(得分:0)

看看蟒蛇zip() function

在这些问题中,python list comprehension有时也会派上用场。

答案 1 :(得分:0)

如果你是Python的初学者,最明显的选择可能是简单的循环方法:

d = {}
lst = ['i', 'am', 'a', 'brown', 'cow']
for key in lst:
  d[key] = 'term'

在此之后,你可以像这样访问你的元素:

In:  print d['am']
Out: 'term'

当然,这不是最好的方法。正如其他人已经说过的那样,你应该看一下list comprehension和内置zip()函数。我将尝试使用列表推导和zip()函数编写一些代码示例,但仍然强烈建议您阅读官方文档。

你应该注意,列表理解总是会给你一个列表作为结果,所以你能得到的最好的东西就是你在问题中展示的内容。这是一个小例子:

lst = ['i', 'am', 'a', 'brown', 'cow']
res = [[item, ['term']] for item in lst]

这将为您提供与您在问题中所写的完全相同的内容。如果你想获得一个字典(如我们的第一个例子),你可能想稍微修改这个代码:

lst = ['i', 'am', 'a', 'brown', 'cow']
res = [(item, 'term') for item in lst]
d = dict(res)

你又来了:

In : print d['am']
Out: 'term'

现在,您可能希望为列表的不同元素指定不同的术语。 假设您有两个相同长度的列表,一个包含元素,另一个包含术语:

lst = ['i', 'am', 'a', 'brown', 'cow']
terms = ['term1', 'term2', 'term3', 'term4', 'term5']

这是zip()函数帮助的地方。如果您将lstterms作为参数传递,它会为您提供一个元组列表(就像之前几行中的res变量一样):

In : zip(lst, terms)
Out: [('i', 'term1'), ('am', 'term2'), ('a', 'term3'), ('brown', 'term4'), ('cow', 'term5')]

现在您可以再次使用dict创建新词典:

what_i_need = dict(zip(lst, terms))