从列表创建词典

2024-05-14 07:28:48 发布

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

我有一个包含4个子列表的列表"testlist"

[
[name1,ip1,mask1,group1],
[name2,ip2,mask2,group1],
[name3,ip3,mask3,group2],
[name4,ip4,mask4,group2]
]

我想从“测试列表”中获取以下词典

{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]:[]}

Tags: 列表name1ip2ip4group1name2name3ip1
2条回答

在列表上使用“传统”循环(假设在某处定义了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

考虑到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

相关问题 更多 >

    热门问题