我有一个包含4x子列表的"testlist"
列表
[
[name1,ip1,mask1,group1],
[name2,ip2,mask2,group1],
[name3,ip3,mask3,group2],
[name4,ip4,mask4,group2]
]
我想从“testlist”中获取以下字典
{group1:[name1,name2], group2:[name3,name4]}
我这里有一小段代码,它从每个子列表中取出“group”元素,然后用带元素作为键来更新字典。我坚持的是如何填写这些键的值?
def test():
dic={}
testlist = [
[name1,ip1,mask1,group1],
[name2,ip2,mask2,group1],
[name3,ip3,mask3,group2],
[name4,ip4,mask4,group2]
]
for each in testlist:
dic.update{each[3]:[]}
考虑到testlist
的每个子列表中的项都是字符串,试试这个:
dic = {i : [j[0] for j in testlist if i==j[3]] for i in set([k[3] for k in testlist])}
以下是相同的代码:
unique_fourth_items = []
for i in testlist:
unique_fourth_items.append(i[3])
unique_fourth_items = set(unique_fourth_items)
dic = {}
# Check in testlist for each item of unique_fourth_items list
for i in unique_fourth_items:
temp = []
for j in testlist:
if j[3] == i:
temp.append(j[0])
dic[i] = temp
在列表上使用“传统”循环(假设name1,ip1等在某处定义):
def test():
dic = {}
testlist = [
[name1, ip1, mask1, group1],
[name2, ip2, mask2, group1],
[name3, ip3, mask3, group2],
[name4, ip4, mask4, group2]
]
for each in testlist:
if each[3] not in dic:
dic[each[3]] = []
dic[each[3]].append(each[0])
return dic