根据另一个列表python在字典中追加列表?

时间:2014-12-10 11:04:07

标签: python python-2.7 python-3.x dictionary append

我有一个这样的字典,空列表为值

e = {'joe': [], 'craig': [], 'will' : []}

然后使用下面的列表,我想将名称的顺序添加到与键对应的字典中的列表

['craig', 'joe', 'will']

所以预期的输出是

{'joe': [2], 'craig': [1], 'will' : [3]}
克雷格排在第一位,乔排在第二位,将排在第三位

6 个答案:

答案 0 :(得分:3)

e = {'joe': [], 'craig': [], 'will' : []}
for i, key in enumerate(['craig', 'joe', 'will'], 1):
    e[key].append(i)

print e

{'will': [3], 'craig': [1], 'joe': [2]}

答案 1 :(得分:0)

您需要的是list.index()。请参阅文档here

e = {'joe': [], 'craig': [], 'will' : []}
names = ['craig', 'joe', 'will']

e['joe'] = names.index('joe')+1

注意1.如果要迭代列表中的所有名称,可以使用for name in names

注意2.如果列表中的名称未在字典中找到,那么您会怎么做?

注意3.如果列表中出现多次相同的名称,您会怎么做?

注意4.您确定要将列表从一个(1,2,3 ......)序列化,而不是像Python那样从零开始计算吗? (0,1,2 ......)。

答案 2 :(得分:0)

e = {'joe': [], 'craig': [], 'will' : []}
l = ['craig', 'joe', 'will']
for i,v in enumerate(l, 1):
    e[v].append(i)

print e

>>> 
{'will': [3], 'craig': [1], 'joe': [2]}

答案 3 :(得分:0)

您可以使用enumerate功能:

>>> e = {'joe': [], 'craig': [], 'will' : []}
>>> for i,j in enumerate(['craig', 'joe', 'will']):
...   e[j].append(i+1)
...
>>> e
{'will': [3], 'craig': [1], 'joe': [2]}

或列表的index method

>>> e = {'joe': [], 'craig': [], 'will' : []}
>>> l = ['craig', 'joe', 'will']
>>> for i in l:
...   e[i].append(l.index(i)+1)
...
>>> e
{'will': [3], 'craig': [1], 'joe': [2]}

答案 4 :(得分:0)

你可以使用枚举吗? 我假设你已经将e初始化为空名字典。 namelist是您想要的名称列表。

for name in e.keys:
  e[name].append(namelist.index[name])

答案 5 :(得分:0)

您可以使用dict.update

d = {'joe': [], 'craig': [], 'will' : []}
n = ['craig', 'joe', 'will']
d.update((k, d[k] + [i]) for i, k in enumerate(n, 1))
# {'craig': [1], 'will': [3], 'joe': [2]}