我正在尝试编写一个函数,它接受包含名称和字符串的字符串列表 标记为参数。并返回(标记,[获得该标记的名单])的字典
示例:
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
答案 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':[' ;杰克']}