【问题标题】:python inputting two dictionaries form a single text filepython输入两个字典形成一个文本文件
【发布时间】:2016-05-23 08:44:29
【问题描述】:

我必须在 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

【问题讨论】:

  • 您正在将数据加载到字典中,因此当您打印它时,您首先会看到键,然后是与该键关联的值的列表。为了只打印值,请查看POST

标签: python algorithm


【解决方案1】:

首先,您不应该存储字典的 repr 并对其进行评估。您应该使用适当的序列化格式,即 JSON,它看起来非常相似,并且可以轻松安全地解析。

然后,您可以简单地存储您需要的两个字典的列表,然后将它们读回:

f = open('C:\\Users\\Rakshith\\Desktop\\ADA project\\combined.txt','r')
data = json.load(f)
males, females = data

【讨论】:

    【解决方案2】:

    您应该以 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)
    

    【讨论】:

      猜你喜欢
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多