Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_Text_Mergesort - Fatal编程技术网

Python 将列表中的内容合并到嵌套词典中

Python 将列表中的内容合并到嵌套词典中,python,list,dictionary,text,mergesort,Python,List,Dictionary,Text,Mergesort,在text.txt中是: Tommy 1200 Sally 1500 Ricky 2030 Tommy 3200 Sally 2900 Tommy 2190 Tommy 3460 我想将内容合并到词典中,结果如下: {'Tommy':[1200,3200,2190,3460], 'Sally':[1500,2900], 'Ricky':[2030]} 以下是我目前的代码: dic = {} name_score = [] with open('text.txt','r') as f:

在text.txt中是:

Tommy 1200
Sally 1500
Ricky 2030
Tommy 3200
Sally 2900
Tommy 2190
Tommy 3460
我想将内容合并到词典中,结果如下:

{'Tommy':[1200,3200,2190,3460],
 'Sally':[1500,2900],
 'Ricky':[2030]}
以下是我目前的代码:

dic = {}
name_score = []
with open('text.txt','r') as f:
    lines = f.readlines()

for line in lines:
    line = line.strip().split(' ')
    name_score.append([line[0],line[1]])
print(name_score)
输出:

[['Tommy', '1200'], ['Sally', '1500'], ['Ricky', '2030'], ['Tommy', '3200'], ['Sally', '2900'], ['Tommy', '2190'], ['Tommy', '3460']]

我已经试过了,但事情对我来说太混乱了。我能得到一些帮助吗?

反复浏览您的ns列表。对于每个条目,检查第一个值是否不是dic中的键。如果不是,则在该键下向dic添加一个空列表。然后,将条目中的第二个值附加到dic中的列表中

for l in ns:
    if l[0] not in dic:
        dic[l[0]] = []
    dic[l[0]].append(l[1])

反复浏览您的ns列表。对于每个条目,检查第一个值是否不是dic中的键。如果不是,则在该键下向dic添加一个空列表。然后,将条目中的第二个值附加到dic中的列表中

for l in ns:
    if l[0] not in dic:
        dic[l[0]] = []
    dic[l[0]].append(l[1])

这是注释(+1)中@Ch3steR注释的
defaultdict
的完美用法:

输出

> python3 test.py
defaultdict(<class 'list'>, {'Tommy': ['1200', '3200', '2190', '3460'], 'Sally': ['1500', '2900'], 'Ricky': ['2030']})
>
> python3 test.py
{'Tommy': ['1200', '3200', '2190', '3460'], 'Sally': ['1500', '2900'], 'Ricky': ['2030']}
>
输出

> python3 test.py
defaultdict(<class 'list'>, {'Tommy': ['1200', '3200', '2190', '3460'], 'Sally': ['1500', '2900'], 'Ricky': ['2030']})
>
> python3 test.py
{'Tommy': ['1200', '3200', '2190', '3460'], 'Sally': ['1500', '2900'], 'Ricky': ['2030']}
>
要获取通用的
指令
。但是Pythonic要做的事情就是使用
defaultdict
,不要被它的打印方式所困扰

使用泛型的
dict
也有一些技巧可以做大致相同的事情,例如使用
setdefault()
,但是
defaultdict
是一种清晰且易于理解的方法。你可以用它做很多事情,比如
defaultdict(lambda:defaultdict(int))
——一个自动创建的整数字典的字典

>>> x = defaultdict(lambda: defaultdict(int))
>>> x['squirrel']['nuts_found'] += 1
>>> x
defaultdict(<function <lambda> at 0x10c285b80>, {'squirrel': defaultdict(<class 'int'>, {'nuts_found': 1})})
>>> 
>x=defaultdict(lambda:defaultdict(int))
>>>x['squirrel']['nuts_found']+=1
>>>x
defaultdict(,{'squirrel':defaultdict(,{'nuts_found':1})
>>> 

这是注释(+1)中@Ch3steR注释的
defaultdict
的完美用法:

输出

> python3 test.py
defaultdict(<class 'list'>, {'Tommy': ['1200', '3200', '2190', '3460'], 'Sally': ['1500', '2900'], 'Ricky': ['2030']})
>
> python3 test.py
{'Tommy': ['1200', '3200', '2190', '3460'], 'Sally': ['1500', '2900'], 'Ricky': ['2030']}
>
输出

> python3 test.py
defaultdict(<class 'list'>, {'Tommy': ['1200', '3200', '2190', '3460'], 'Sally': ['1500', '2900'], 'Ricky': ['2030']})
>
> python3 test.py
{'Tommy': ['1200', '3200', '2190', '3460'], 'Sally': ['1500', '2900'], 'Ricky': ['2030']}
>
要获取通用的
指令
。但是Pythonic要做的事情就是使用
defaultdict
,不要被它的打印方式所困扰

使用泛型的
dict
也有一些技巧可以做大致相同的事情,例如使用
setdefault()
,但是
defaultdict
是一种清晰且易于理解的方法。你可以用它做很多事情,比如
defaultdict(lambda:defaultdict(int))
——一个自动创建的整数字典的字典

>>> x = defaultdict(lambda: defaultdict(int))
>>> x['squirrel']['nuts_found'] += 1
>>> x
defaultdict(<function <lambda> at 0x10c285b80>, {'squirrel': defaultdict(<class 'int'>, {'nuts_found': 1})})
>>> 
>x=defaultdict(lambda:defaultdict(int))
>>>x['squirrel']['nuts_found']+=1
>>>x
defaultdict(,{'squirrel':defaultdict(,{'nuts_found':1})
>>> 

你的text.txt文件中的'Jack'和所有'G*'值在哪里?你是如何得到的
'G2'、'G5'…
这些甚至都不存在的
.txt
文件你显示了问题!让我改变这个@抱歉,我弄错了。你可以在这里使用
defaultdict
new=defaultdict(list)
;新增[k]。追加(v)应该这样做。文本中的“Jack”和所有“G*”值在哪里?您是如何获得的
“G2”和“G5”…
这些甚至都不存在的
.txt
文件您显示了问题!让我改变这个@抱歉,我弄错了。你可以在这里使用
defaultdict
new=defaultdict(list)
;新增[k]。追加(v)应该可以