首页 > 解决方案 > 涉及列表和字典的程序

问题描述

给定一个二维列表,例如[ [2,3],[3,4],[5]]人 2 是朋友 3 等,找出每个人有多少朋友。注意,一个人没有朋友

我的代码:

def find_friends(last):
     dct = {}
     for i in range(len(last)):
        element = lst[i][0]
        if len(lst[i]) != 1:
           dct[element] = dct.get(element,0) + 1
        else:
           dct[element] = 0
     return dct 

我得到的输出:

lst = ([2,3],[3,4],[5])
print(find_friends(last));

{2: 1, 3: 1, 5: 0}

预期输出:

{2:1, 3:2, 5:0}

标签: python

解决方案


您需要遍历主列表的每个元素的所有元素(即,如果 A 与 B 是朋友,那么 B 也是 A 的朋友):

def find_friends(lst):
    dct = {}
    for i in range(len(lst)):
        for element in lst[i]:
            if len(lst[i]) != 1:
                dct[element] = dct.get(element,0) + 1
            else:
                dct[element] = 0
    return dct


>>> lst = ([2,3],[3,4],[5])
>>> print(find_friends(lst))
{2: 1, 3: 2, 4: 1, 5: 0}

使您的代码更优雅的小改进 - 不要迭代索引范围,而是迭代列表本身:

def find_friends(lst):
    dct = {}
    for element1 in lst:
        for element2 in element1:
            if len(element1) != 1:
                dct[element2] = dct.get(element2,0) + 1
            else:
                dct[element2] = 0
    return dct

推荐阅读