Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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_Json_Python 2.7_List_Dictionary - Fatal编程技术网

在python中从列表中删除重复的和合并的内部字典项

在python中从列表中删除重复的和合并的内部字典项,python,json,python-2.7,list,dictionary,Python,Json,Python 2.7,List,Dictionary,我有一个字典清单如下 [ { "user": [ "jon" ], "email": "jon123@email.com" }, { "user": [ "mike" ], "email": "mike456@email.com" }, { "user": [ "J Jon", "Jonathan" ], "email": "jon123@email

我有一个字典清单如下

[
{
    "user": [
        "jon"
    ], 
    "email": "jon123@email.com"
}, 
{
    "user": [
        "mike"
    ], 
    "email": "mike456@email.com"
}, 
{
    "user": [
        "J Jon", 
        "Jonathan"
    ], 
    "email": "jon123@email.com"
}, 
{
    "user": [
        "taylor"
    ], 
    "email": "taylor789@email.com"
}, 
{
    "user": [
        "me_mike"
    ], 
    "email": "mike456@email.com"
}
]

如果两个列表项(作为字典)在字典内的
用户
列表中具有相同的
电子邮件
,但值不同,我希望合并这两个列表项。如何从上面python中显示的列表中获得如下结果

[
{
    "user": [
        "jon",
        "J Jon", 
        "Jonathan"
    ], 
    "email": "jon123@email.com"
}, 
{
    "user": [
        "mike",
        "me_mike"
    ], 
    "email": "mike456@email.com"
},  
{
    "user": [
        "taylor"
    ], 
    "email": "taylor789@email.com"
}     
]
试试这个-

a = ... # the json list
d = {}
for i in a:
    d.setdefault(i['email'], []).extend(i['user'])

print [{'user' : v, 'email' : k} for k, v in d.items()]
试试这个-

a = ... # the json list
d = {}
for i in a:
    d.setdefault(i['email'], []).extend(i['user'])

print [{'user' : v, 'email' : k} for k, v in d.items()]
其中my_列表是您的json列表


其中my_list是您的json列表

“如何从上面python中显示的列表中获得以下结果”。一个好方法是实际尝试。尝试使用字典,其中键是用户电子邮件,值是用户列表。“如何从上面python中显示的列表中获得以下结果。”一个很好的方法是实际尝试。尝试使用一个字典,其中键是用户电子邮件,值是用户列表。我在comas中写了完全相同的代码,spacesI也写了这段代码,但我不知道名为setdefault的方法。所以我的代码比这个长一点。谢谢,我通过阅读您的代码学会了一种新方法。为什么不使用
defaultdict(list)
并避免使用
setdefault
extend
方法?@VMRuiz,是的,我本可以使用
defaultdict()
,但当时我没有想到PI向comas编写了完全相同的代码,spacesI也编写了此代码,但我不知道名为setdefault的方法。所以我的代码比这个长一点。谢谢,我通过阅读您的代码学会了一种新方法。为什么不使用
defaultdict(list)
并避免使用
setdefault
extend
方法?@VMRuiz,是的,我本可以使用
defaultdict()
,但当时我没有想到p您的代码缩进不正确,请复制粘贴对不起。我更新了。你的代码缩进不正确。对不起。我更新了它。