我有一个这样的字典,空列表为值
e = {'joe': [], 'craig': [], 'will' : []}
然后使用下面的列表,我想将名称的顺序添加到与键对应的字典中的列表
['craig', 'joe', 'will']
所以预期的输出是
{'joe': [2], 'craig': [1], 'will' : [3]}
克雷格排在第一位,乔排在第二位,将排在第三位
答案 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]}