从python字典创建edgelist

2024-05-28 20:59:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,其结构如下:

1:{'Amendment': '1', 
   'status': 'Stadf\xc3\xa6stet', 
   'Name': 'Bodil Kornbek', 
   'title': 'L 1 Forslag til till\xc3\xa6gsbevillingslov for 2004.', 
   'fremsat': '2005-03-04', 
   'Vote.Numeric': '2', 
   'PSession': '1', 
   'vedtaget': '2005-04-12', 
   'Lsession': '3', 
   'Voteid': '38', 
   'Month': '4', 
   'Year': '2005', 
   'Vote': 'Frav\xc3\xa6rende', 
   'Party': 'KD', 
   'Law': 'L 1', 
   'ministerie': 'Finansministeriet'}

关键字的范围从1到约500000,每个嵌套字典包含一位丹麦议会议员一票通过的信息。此外,还有识别该成员投票的唯一投票的信息。我希望每个成员都能提取出该成员活跃的所有投票,并将该成员的投票行为与在同一投票子集上处于活动状态的所有其他成员进行迭代比较。在

理想情况下,对于每个成员,我会将该成员与另一个成员在其活跃的投票上进行比较,并计算他们投票相同的投票占其所有普通投票的比例。如果这个比例大于,比如说,.65,那么这对就被添加到一个列表中。在

因此,最终结果应该是一个具有以下格式的列表:

^{pr2}$

我能告诉我如何在python中实现这一点吗?在


Tags: name信息列表字典status成员投票结构
1条回答
网友
1楼 · 发布于 2024-05-28 20:59:27

首先,让我们转换数据(我将在这里做一些假设),以便字典的键是议会成员(由Name标识),并且每个字典的数据是他们在每个问题(Voteid)上投票(Vote.Numeric)的映射,因此Voteid是该子字典中的键。我们可以把剩下的信息当作无关紧要的东西丢掉。在

非花哨的程序方式:

member_to_votes = defaultdict(dict)
for item in vote_data:
    member_to_votes[item['Name']][item['Voteid']] = item['Vote.Numeric']

现在让我们定义两个投票记录之间的相似性:

^{2}$

现在,我们可以创建所有成员对,并查看哪些成员同意:

def agreeing_members(member_to_votes, threshold):
    return [
        [a, b] for a, b in itertools.combinations(member_to_votes.keys(), 2)
        if votes_agree(member_to_votes[a], member_to_votes[b], threshold)
    ]

相关问题 更多 >

    热门问题