我不是程序员,也不是 python的新手,我有一个来自json文件的dicts列表:
# JSON file (film.json)
[{"year": ["1999"],"director": ["Wachowski"],"film": ["The Matrix"],"price": ["19,00"]},{"year": ["1994"],"director": ["Tarantino"],"film": ["Pulp Fiction"],"price": ["20,{"year": ["2003"],"film": ["Kill Bill vol.1"],"price": ["10,"film": ["The Matrix Reloaded"],"price": ["9,99"]},"film": ["Pulp Fyction"],"price": ["15,"director": ["E. de Souza"],"film": ["Street fighter"],"price": ["2,{"year": ["1999"],{"year": ["1982"],"director": ["Ridley Scott"],"film": ["Blade Runner"],99"]}]

我可以导入json文件:

import json
json_file = open('film.json')
f = json.load(json_file)

但在那之后,我无法在f中找到事件,并按电影片名分组.
这就是我想要实现的目标:

## result grouped by 'film'
#group 1
{"year": ["1999"],00"]}
{"year": ["1999"],00"]}
#group 2
{"year": ["1994"],00"]}
{"year": ["1994"],00"]}
#group X
 ...

或更好:

new_dict = { 'group1':[[],[],...],'group2':[[],'groupX':[...] }

目前我正在测试嵌套,但没有运气..

谢谢.

注意:“纸浆fyction”是未来实现的模糊字符串匹配的错误,现在我只需要一个’重复的石斑鱼’

note2:使用python 2.x.

解决方法

由于您的数据未排序,请使用 collections.defaultdict() object为新密钥显示列表,然后按电影标题键入:
from collections import defaultdict

grouped = defaultdict(list)

for film in f:
    grouped[film['film'][0]].append(film)

电影[‘电影’] [0]值用于分组电影.如果您想使用更复杂的标题分组,则必须创建该密钥的规范版本.

演示:

>>> from collections import defaultdict
>>> import json
>>> with open('film.json') as film_file:
...     f = json.load(film_file)
... 
>>> grouped = defaultdict(list)
>>> for film in f:
...     grouped[film['film'][0]].append(film)
... 
>>> grouped
defaultdict(<type 'list'>,{u'Street fighter': [{u'director': [u'E. de Souza'],u'price': [u'2,00'],u'film': [u'Street fighter'],u'year': [u'1994']}],u'Pulp Fiction': [{u'director': [u'Tarantino'],u'price': [u'20,u'film': [u'Pulp Fiction'],u'Pulp Fyction': [{u'director': [u'Tarantino'],u'price': [u'15,u'film': [u'Pulp Fyction'],u'The Matrix': [{u'director': [u'Wachowski'],u'price': [u'19,u'film': [u'The Matrix'],u'year': [u'1999']},{u'director': [u'Wachowski'],u'year': [u'1999']}],u'Blade Runner': [{u'director': [u'Ridley Scott'],99'],u'film': [u'Blade Runner'],u'year': [u'1982']}],u'Kill Bill vol.1': [{u'director': [u'Tarantino'],u'price': [u'10,u'film': [u'Kill Bill vol.1'],u'year': [u'2003']}],u'The Matrix Reloaded': [{u'director': [u'Wachowski'],u'price': [u'9,u'film': [u'The Matrix Reloaded'],u'year': [u'2003']}]})
>>> from pprint import pprint
>>> pprint(dict(grouped))
{u'Blade Runner': [{u'director': [u'Ridley Scott'],u'Street fighter': [{u'director': [u'E. de Souza'],u'year': [u'2003']}]}

使用SoundEx分组电影将如下:

from itertools import groupby,islice,ifilter

_codes = ('bfpv','cgjkqsxz','dt','l','mn','r')
_sounds = {c: str(i) for i,code in enumerate(_codes,1) for c in code}
_sounds.update(dict.fromkeys('aeIoUy'))
def soundex(word,_sounds=_sounds):
    grouped = groupby(_sounds[c] for c in word.lower() if c in _sounds)
    if _sounds.get(word[0].lower()):
        next(grouped)  # remove first group.
    sdx = ''.join([k for k,g in islice((g for g in grouped if g[0]),3)])
    return word[0].upper() + format(sdx,'<03')

grouped_by_soundex = defaultdict(list)
for film in f:
    grouped_by_soundex[soundex(film['film'][0])].append(film)

导致:

>>> pprint(dict(grouped_by_soundex))
{u'B436': [{u'director': [u'Ridley Scott'],u'K414': [{u'director': [u'Tarantino'],u'P412': [{u'director': [u'Tarantino'],u'year': [u'1994']},{u'director': [u'Tarantino'],u'S363': [{u'director': [u'E. de Souza'],u'T536': [{u'director': [u'Wachowski'],u'year': [u'2003']},u'year': [u'1999']}]}

Python – 在字典列表中查找重复项并对其进行分组的更多相关文章

  1. foreach with php中的array_chunk和多个数组

    我是一个相对较新的PHP,我一直在努力让这个工作.我有一个多个数组,并希望以特定格式和组中回显每个数组.所以我经历了stackoverflow并找到了这个帮助:这会返回我想要的但是数组的最后几项不会填充到6并且创建2个额外的空div并且弄乱了设计.这是我拥有的数组的一个例子:我希望能够编辑一个将成为其他人的主人的div…并且使用我读过另一个问题的内爆但是没有用来回应我想要的字符串..请有人帮忙吗?

  2. Perl Xpath:日期年份之前的搜索项目

    我有一个包含电影的xml数据库,例如:从Perl脚本我想按日期找到电影.如果我搜索一个特殊年份的电影,例如:它完全正常工作,并返回2012年的所有电影,但如果我在一年之前搜索所有电影,它就不起作用,例如:它返回所有电影..解决方法好吧,像往常一样,有不止一种方法可以做到这一点.)要么让XPath工具知道它应该比较日期与这样的事情:…

  3. Python – 在字典列表中查找重复项并对其进行分组

    我不是程序员,也不是python的新手,我有一个来自json文件的dicts列表:我可以导入json文件:但在那之后,我无法在f中找到事件,并按电影片名分组.这就是我想要实现的目标:或更好:目前我正在测试嵌套,但没有运气..谢谢.注意:“纸浆fyction”是未来实现的模糊字符串匹配的错误,现在我只需要一个’重复的石斑鱼’note2:使用python2.x.解决方法由于您的数据未排序,请使用col

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部