Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将列表转换为字典_Python_List_Dictionary - Fatal编程技术网

Python将列表转换为字典

Python将列表转换为字典,python,list,dictionary,Python,List,Dictionary,我正在尝试编写一个函数,它接受包含名称和字符串的字符串列表 标记为参数。并返回一个字典(mark,[获得该标记的姓名列表]) 例如: def example(["John,5", "Jessica,5", "Jack,7"]): 返回: {'5' : ["John", "Jessica"], '7' : "Jack"} 我发现这是一个棘手的问题。。。我如何使用split(',')解决这个问题 这就是我到目前为止所做的: def create_marks_dict(my_list):

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

例如:

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

{'5' : ["John", "Jessica"], '7' : "Jack"}
我发现这是一个棘手的问题。。。我如何使用split(',')解决这个问题

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

def create_marks_dict(my_list):
    dictionary = {}

    for name in my_list:
        if name not in dictionary:
            dictionary[name]
    return dictionary
您需要使用集合中的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
,则您可以在返回时强制转换
字典

return dict(dictionary)
您需要使用集合中的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
,则您可以在返回时强制转换
字典

return dict(dictionary)

您需要使用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

您需要使用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

这是使用普通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':['Jack']}

这是使用普通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':['Jack']}

您基本上会得到的是,但是使用
key,value=item.split(“,”)
定义示例(['John,5”,“Jessica,5”,“Jack,7”]):
是无效语法。您确定要
{'5':['John Jessica'],'7':'Jack'}
而不是
{'5':['John吗,“Jessica”],“7':[“Jack”]}
?基本上你会得到一个重发,但是使用
key,value=item.split(“,”)
def示例([“John,5”,“Jessica,5”,“Jack,7”]):
是无效语法。你确定要
{5':[“John”,“Jessica”],“7':“Jack
,而不是
{5':[“John”,“Jessica”],“Jack 7”:
?有没有一种方法可以使输出不带有
defaultdict(,
)?如果函数调用是
print create\u marks\u dict(…)
且其输出是
defaultdict(,{…}),则可以将其转换为经典的方法:
dict(defaultdict(…)
,那么如果你想像普通字典一样打印它,你可以使用
打印dict(create_marks_dict(…)
@AshokaLella你确定输出吗?我宁愿认为
Jack
本身也在一个列表中,比如
{'5':['John','Jessica','7':[“Jack”]}
…有没有一种方法可以使输出不具有
defaultdict(,
?您可以将其转换为经典的:
dict(defaultdict(…)
如果函数调用是
print create_marks_dict(…)
并且其输出是
defaultdict(,{…})
,那么如果你想像普通字典一样打印它,你可以使用
打印dict(create_marks_dict(…)
@AshokaLella你确定输出吗?我宁愿认为
Jack
本身也在一个列表中,比如
{'5':['John','Jessica','7':[“Jack”]}
…如果我有3个带有
、5个
,我可能会以类似
[[['John'、'Jessica']和'Jacob'的东西结尾
使用此代码。这可能是不需要的。是的,这是真的,谢谢你指出。你能建议改进列表理解吗?很难说。我会使用
defaultdict
方法,并接受即使是单个条目(如
Jack
此处)也在一个列表中。我相信它毕竟更容易处理…如果列表中允许单个条目而不是字符串,我可以使用列表理解来完成。我相应地更改了代码。这违反了Python的核心原则:它不可读,变量和方法名没有意义,存在不必要的行继续和一个不必要的三元运算符。将其与所选答案进行比较,了解如何正确操作。如果我有3个带有
,5
,我可能会以类似
[['John','Jessica','Jacob']的内容结尾
使用此代码。这可能是不需要的。是的,这是真的,谢谢你指出。你能建议改进列表理解吗?很难说。我会使用
defaultdict
方法,并接受即使是单个条目(如
Jack
此处)也在一个列表中。我相信它毕竟更容易处理…如果列表中允许单个条目而不是字符串,我可以使用列表理解来完成。我相应地更改了代码。这违反了Python的核心原则:它不可读,变量和方法名没有意义,存在不必要的行继续和一个不必要的三元运算符。将其与所选答案进行比较,了解如何正确执行。