我有一个 JSON Feed数据,其中包含许多用户关系,如:
"subject_id = 1,object_id = 2,object = added 
subject_id = 1,object = liked
subject_id = 1,object_id = 3,object = added
subject_id = 2,object_id = 1,object = added"

现在我使用以下代码将JSON转换为networkx图形:

def load(fname):
G = nx.DiGraph()
d = simplejson.load(open(fname))
for item in d:
    for attribute,value in item.iteritems():
        G.add_edge(value['subject_id'],value['object_id'])
return G

结果是这样的:

[('12820','80842'),('12820','81312'),'81311'),('13317','29'),('12144','81169'),('13140','16687'),'79092'),'78384'),'48715'),'54151'),'13718'),'4060'),'9914'),'32877'),'9918'),'4740'),'47847'),'29632'),'72395'),'48658'),'78394'),'4324'),'4776'),'78209'),'51624'),'66274'),'38009'),'80606'),'13762'),'28402'),'13720'),'9922'),('13303','81199'),('13130','70835'),'7936'),'30839'),'11558'),'32157'),'2785'),'73597'),'49879'),'62303'),'64275'),'48123'),'8722'),'43303'),'39316'),'78368'),'28328'),'57386'),'30739'),'71464'),'50296'),('12032','65338'),('13351','81316'),'16926'),'80435'),'79086'),('12107','16811'),'70310'),'10008'),'25466'),'36625'),'81320'),'48912'),'62209'),('12816','79526'),'79189'),('13180','39769'),'81319'),('12293','70918'),'59403'),'76348'),'12253'),'65078'),'61126'),'12243'),'12676'),'11693'),'78387'),'54788'),'26113'),'50472'),'50365'),'66431'),'29781'),'50435'),'48145'),'79170'),'76730'),'13260'),('12673',('12672',('13559','9327'),('12583','25462'),('12252','50754'),'11778'),'38306'),'48170'),'5488'),('12325','78635'),'4459'),'68699'),('12559','80285'),'78273'),('12020','48291'),'4498'),('12746','48916'),('13463','56785'),'47821'),('13461','80790'),'4425'),('12550','48353')]

我想做的是如果这些用户之间有一个以上的关系,我想增加体重.所以,正如我在JSON关系中演示的,subject_id 1与subject_id 2有3个关系,因此它们的权重应该是3,而user3与subject_id 1只有1个关系,所以它应该是1作为权重.

更新:

我想我已经解决了我的问题,使用:

def load(fname):
G = nx.MultiDiGraph()
d = simplejson.load(open(fname))
for item in d:
    for attribute,value in item.iteritems():
        if (value['subject_id'],value['object_id']) in G.edges():
            data = G.get_edge_data(value['subject_id'],value['object_id'],key='edge')
            G.add_edge(value['subject_id'],key='edge',weight=data['weight']+1)
        else:
            G.add_edge(value['subject_id'],weight=1)

print G.edges(data=True)

但是,您的帮助仍然会有所改善.

解决方法

您可以使用权重属性存储您的权重.您可以使用has_edge方法检查边缘是否存在.结合这些会给你:
def load(fname):
    G = nx.DiGraph()
    d = simplejson.load(open(fname))
    for item in d:
        for attribute,value in item.iteritems():
            subject_id,object_id = value['subject_id'],value['object_id']
            if G.has_edge(subject_id,object_id):
                # we added this one before,just increase the weight by one
                G[subject_id][object_id]['weight'] += 1
            else:
                # new edge. add with weight=1
                G.add_edge(subject_id,object_id,weight=1)
    return G

python – 根据网络重复边缘更新权重信息的更多相关文章

  1. ios – 如何使用string中的参数创建Selector

    我正在使用Swift3.1和Xcode8.3.3编写程序.我想创建一个类,负责在键盘出现和消失时移动整个视图.但是我在使用字符串参数创建自定义选择器时遇到了困难.要显示或隐藏键盘我们需要功能:我正在尝试创建一个这样的选择器:它正在编译,但是当键盘出现时,它会崩溃.因为它是独立的类我不能使用这种结构:因为它将Swift函数转换为Objective-C函数.所以问题是:如何用参数字符串创建一个Selector表单?

  2. ios – 为什么,将nil作为参数从Objc C发送到swift类初始化器,用新对象替换nil参数

    除非属性本身被声明为nonnull:

  3. ios – 如何为NSNotification编写单元测试

    我在swift工作,我想刷新一个页面,所以我使用通知发送它,我在一个ViewController中发布通知并在另一个中添加观察者,它工作正常.我想要做的是在swift中添加单元测试.我查了很多网站但是没能做到.我是新手,不知道从哪里开始.基本上工作是,当我点击按钮通知被发布时,并且当加载下一个视图控制器时,添加通知观察者.我该怎么做单元测试提前致谢编辑:码并添加观察者解决方法一般的解决方案是:使用

  4. iOS 6 javascript与object.defineProperty的间歇性问题

    当访问使用较新的Object.defineProperty语法定义属性的对象的属性时,有没有其他人注意到新iOS6javascript引擎中的间歇性错误/问题?https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty我正在看到javascript失败的情况,说

  5. ios – NSNotificationCenter多次呼叫

    我在我的应用程序中实现了NSNotificationCenter.我在完成图像解码时发送通知.第一次图像解码将完成8次.所以通知假设发送8次.但它调用64次(8*8).这是我的代码我是如何实现的–>//初始化//调用方法//解除分配//发布通知有人可以建议我做错了.提前致谢.//调用方法是这样的(调用8次)解决方法解:我重新检查了我的代码,initWithFrame:(CGRect)框架调用了8次

  6. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

  7. ios – 使用NSMutableAttributedStrings快速更改文本颜色

    我有一个UITableView,我想在同一行中使用不同的颜色显示每行的文本.我试过这个代码,尝试从Obj-C翻译,但我不能让它工作这一切的输出是其中数字34对应于object.valueForKey!.description)被替换为{.如果我留下关于NSAttributedString的这段代码,行文本会正确显示.解决方法我认为问题可能在于分配给cell.textLabel?.attributedText.也许是这样的:不确定你是否希望字符串的第二部分是红色或其他颜色,所以我把它变黑了.

  8. Xcode / iOS:如何隐藏Navigation-和ToolBar向下滚动?

    我想在iPhone上隐藏两个滚动条.当我向上滚动时,他们应该再次出现..我该如何处理?

  9. ios – 将阵列存储在Realm对象中

    我是Swift的新星.有没有办法在RealmObject中存储字符串数组?我有一个JSON对象像:如何将消息数组存储在权限密钥中?

  10. xcode – 使用performSelector执行的方法中的objc_retain中的崩溃

    我有这个奇怪的崩溃与ARC自动插入objc_retains在我的代码.我有以下两个类:在某些时候,我实例化一个MenuItem:然后在其他地方,我在菜单项上调用performAction:在执行某些方法我遇到崩溃:为什么会这样?

随机推荐

  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问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部