我必须在python中实现稳定的婚姻问题,其中' n '男人和' n '女性每个都会有一个偏好列表,算法会根据它进行匹配。 我必须输入参与者的数量' n'以及单个文本文件中的男性和女性偏好。
现在我正在使用两个文件输入,算法工作正常,但我需要将所有数据保存在一个文件中。
我的代码是
import copy
f = open('C:\\Users\\Rakshith\\Desktop\\ADA project\\uyt.txt','r')
malepreferences = eval(f.read())
print(malepreferences)
g = open('C:\\Users\\Rakshith\\Desktop\\ADA project\\uuu.txt','r')
femalepreferences=eval(g.read())
print(femalepreferences)
我的两个输入文件之一看起来像
{
'john': ['jennifer', 'alexis', 'abby', 'megan', 'kate', 'anna', 'samantha', 'ashley', 'emma', 'jesse'],
'harvey': ['abby', 'emma', 'jennifer', 'anna', 'alexis', 'samantha', 'ashley', 'kate', 'megan', 'jesse'],
'kumar': ['emma', 'alexis', 'jennifer', 'anna', 'ashley', 'samantha', 'megan', 'jesse', 'abby', 'kate'],
'David': ['megan', 'samantha', 'anna', 'jesse', 'emma', 'alexis', 'kate', 'ashley', 'abby', 'jennifer'],
'jim': ['kate', 'anna', 'ashley', 'abby', 'samantha', 'alexis', 'jennifer', 'megan', 'emma', 'jesse'],
'fred': ['ashley', 'jennifer', 'anna', 'jesse', 'alexis', 'megan', 'abby', 'kate', 'emma', 'samantha'],
'peter': ['jesse', 'alexis', 'megan', 'ashley', 'abby', 'jennifer', 'anna', 'emma', 'kate', 'samantha'],
'patel': ['jennifer', 'alexis', 'emma', 'samantha', 'megan', 'abby', 'kate', 'ashley', 'jesse', 'anna'],
'mike': ['emma', 'abby', 'anna', 'jesse', 'ashley', 'jennifer', 'samantha', 'megan', 'kate', 'alexis'],
'randy': ['jennifer', 'samantha', 'kate', 'jesse', 'alexis', 'ashley', 'anna', 'abby', 'megan', 'emma']}
我的输入文件应如下所示
n
m1: w11, w12, ..., w1n
mn: wn1, wn2, ..., wnn
...
...
...
w1: m11, m12, ..., m1n
wn: mn1, mn2, ..., mnn
答案 0 :(得分:0)
首先,你不应该存储字典的repr并评估它。您应该使用正确的序列化格式,即JSON,它看起来非常相似,可以轻松安全地解析。
然后,您只需存储所需的两个词典的列表,然后阅读它们:
f = open('C:\\Users\\Rakshith\\Desktop\\ADA project\\combined.txt','r')
data = json.load(f)
males, females = data
答案 1 :(得分:0)
您应该以Daniel提到的JSON格式存储数据。 你可以用这样的结构:
{
"Name": "john",
"Preference":[
{
"Name" : "jennifer",
"Name" : "alexis",
......
"Name" : "jesse",
}
]
}
要阅读JSON文件,您需要内置库:json
import json
with open('C:\\Users\\Rakshith\\Desktop\\ADA project\\uyt.txt','r') as f:
data = json.load(f)