Python将列表转换为字典

时间:2014-06-01 06:03:10

标签: python list dictionary

我正在尝试编写一个函数,它接受包含名称和字符串的字符串列表 标记为参数。并返回(标记,[获得该标记的名单])的字典

示例:

def example(["John,5", "Jessica,5", "Jack,7"]):

返回:

{'5' : ["John", "Jessica"], '7' : "Jack"}

我发现这是一个棘手的问题......我如何使用拆分来解决这个问题(',')

这是我到目前为止所做的:

def create_marks_dict(my_list):
    dictionary = {}

    for name in my_list:
        if name not in dictionary:
            dictionary[name]
    return dictionary

3 个答案:

答案 0 :(得分:3)

您需要使用集合中的 defaultdict 来使用词典中的列表

from collections import defaultdict
def create_marks_dict(my_list):    
    dictionary = defaultdict(list)
    for item in my_list:                                              
        name, marks=item.split(',')
       dictionary[marks].append(name)                               
    return dictionary

输出:

{'5' : ["John", "Jessica"], '7' : "Jack"}

如果需要输出dict而不是defaultdict,则可以在返回时投射dictionary

return dict(dictionary)

答案 1 :(得分:1)

您需要使用collections.defaultdict:

from collections import defaultdict

marksdict = defaultdict(list)

for entry in ["John,5", "Jessica,5", "Jack,7"]:
   name,mark = entry.split(',')
   marksdict[mark].append(name)

print marksdict

答案 2 :(得分:0)

这是使用普通python字典的版本:

def get_dict(nm_list):
    d = {}
    for n, m in [(name, mark) for (name, mark) in \
                tuple([nm.split(',') for nm in nm_list])]:
        d[m] = [n] if m not in d else d[m]+[n]
    return d

la = ['John,5', 'Jessica,5', 'Jack,7']
d = get_dict(la)
print d

输出结果为:{' 5':[' John',' Jessica'],' 7':[' ;杰克']}