繁体   English   中英

尝试对字典中具有某些相似性的不同值进行分组

Trying to group different values that have some similarities in a dictionary

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在解析一个看起来像这样的 JSON:

[{"acc":P1,"Lenght":855,..."MBDB-1":{"source_id":"2btp_A","regions":[[70,73],[231,234]],"content_fraction":0.033,"content_count":8},"MBDB-2":{...},"MDB-2":{...}},\
{"acc":P2,"Lenght":145,...,"MBDB-14":{...},...}]

而且我正在尝试生成一个字典,其中只包含我想要的信息(即"acc", "Lenght" )以及以“MBDB”开头的键内的所有信息,无论之后是什么(实际的文件很大,有很多我并不真正需要的信息)。

对于前两个项目,这相当容易。 这是我得到的:

import json 

my_dict= dict.fromkeys(['ID', 'MISSING','LENGHT'])
with open("...\mypath\Json1.json") as f:
    data = json.loads(f.read())
    for i in data:
        if "acc" in i:
            my_dict["ID"]=i["acc"]

但是我真的不知道如何将“MBDB-something”的每个值附加到MISSING键。 据我了解,我不能使用startswith() ,因为我正在使用 dict (由json.loads()生成)。

结果应该是这样的:

  ID LENGHT source_id             regions content_count

0 P1    855    2btp_A [[70,73],[231,234]]             8
1 P1    855       ...               [...]             #   
2 P2    145       ...               [...]             #

所以我以后可以使用.explode并对这些键保存的一些信息执行不同的操作。 我觉得我无法解决这个问题,所以欢迎提出任何建议! 编辑:我已将所需的输出编辑为所有“MBDB”键内不同键的内容。

1 个回复

由于键在 json 对象中是一致的,因此您可以根据找到的每个“MBDB”键在列表中插入一项。

# load data
with open("...\mypath\Json1.json") as f:
    data = json.loads(f.read())

out = [] # final output
for d in data:
    for k, v in d.items():
        if "MBDB" in k: 
            out.append({
                "ID": d["acc"],
                "LENGTH": d["Lenght"],
                "source_id": v["source_id"],
                "regions": v["regions"],
                "content_count": v["content_count"]
            })

这里的最终输出将是一个 dict 列表。 您可以使用熊猫将其转换为数据帧。

df = pandas.DataFrame(out)

# output
 ID  LENGTH source_id                 regions  content_count
0  P1     855    2btp_A  [[70, 73], [231, 234]]              8
1  P1     855    2btp_B  [[70, 73], [231, 234]]              8
2  P2     855    2btp_A  [[70, 73], [231, 234]]              8
3  P2     855    2btp_B  [[70, 73], [231, 234]]              8
2 在字典中寻找相似之处

我正在尝试查找多个.txt文件之间的相似之处。 我将所有这些文件放在字典中,文件名作为键。 当前代码: 在这种情况下,关键是文件名。 该值是标题和数据。 我想找出多个文件之间的值是否重复,以便可以在SQL中加入它们。 我不确定该怎么做 编辑示例文件: 并从代码 ...

2018-10-24 09:47:23 2 63   python
4 当某些键有多个值时,如何按键打印字典

我有一个大字典,我只是试图打印具有多个值的键。 对于每个值,我想在新行上打印。 我尝试迭代字典,但是当你找到某个键​​时我不确定如何查看单个值。 我希望最终结果看起来像这样。 ...

5 熊猫:按相似性分组

目前我有这样的数据: 我想将这些项目分组为这样的 然后,我想根据属性相似性匹配这些项目: 如何使用 pandas 修改此数据框? 我确实使用了 groupby 方法,但它显示了属性数量而不是属性名称数组。 ...

7 如何准备某些值与组非常不同的数据?

有些值与组的值如此不同,因为缺少行并且数据不连续,这使我的diffVal异常。 您可以看到在日期(小时; 11,12)处缺少行,我需要将异常值平滑为正常值。 我正在尝试将异常值设置为NULL,但问题是如何从大数据帧中知道数据帧中是否存在异常值,如果这是我的示例数据帧,则可以将大于1 ...

8 UserDefaults在同一应用程序组中具有不同的值

我有App + Extension,我做了这样的共享存储 但是当我调试应用程序时,我看到内存地址A和正确的值(因为我通过Main app放置了值,但是当我调试扩展程序时,我的内存地址为B ,内部没有值。 我在Main和Extension应用程序上都使用了相同的AppGroup,并且 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM