在 Python 中存储两个链接值

Storing two linked values in Python

我知道在 Python 中有不同的数据存储方式,但我不知道该用什么来满足我的需要。

我做了一个小 client/server 游戏,我希望他们的猜测次数就是他们的分数。然后我想将他们的名字(当前是 IP 地址)和分数一起写入一个文件,以创建一个高分列表。虽然我可以完美地做到这一点,但我只希望最多存储 5 个分数并能够对它们进行排序,这样当我向用户显示高分和名称时,最低的(即最好的分数)在顶部。我还想允许用户名多次存在。

虽然写数据和读数据很容易,但我真的不知道该用什么数据类型,字典在某些情况下会很有意义,但一个键只能有一个值和键只能存在一次,列表与其中包含的其他特定值无关,因此使用起来都没有意义,而且元组看起来也无法排序。

我正在考虑将每一行读入一个单独的列表,然后使用索引来比较分数,这样我就可以对它们进行排序并将其写回文件,但我认为这会影响内存吗?

在不使用像 SQL 这样的极端学习曲线的情况下,将名称和分数一起保存的最简单方法是什么?

一种学习曲线很小的格式是 json

它基本上是一个字典,每个键可以是数字、字符串、布尔值、浮点数、数组或其他字典(可能有更多类型)。

>>> d = {}
>>> d['someId'] = {'somekey': [0,2,3]}
>>> d
{'someId': {'somekey': [0, 2, 3]}}
>>> d['someId']['somekey']
[0, 2, 3]
>>> d['someId']['number'] = 23456776543
>>> d['someId']['number']
23456776543

一旦掌握了 json 的窍门,请考虑 mongo.

的 ODM/ORM

或者暂时添加一个辅助函数,根据分数和名字拉入排序。

>>> d = {'user1': {'name': 'howdy', 'score': 11},'user2': {'name': 'howdy2', 'score': 12}}
>>> d.keys()
['user2', 'user1']
>>> for user_id in d.keys():
...     print(d[user_id]['name'], d[user_id]['score'])
... 
('howdy2', 12)
('howdy', 11)

如果需要设置关系数据和模型,请考虑 sqlite,因为它具有基础知识,而且设置起来不像 postgres 或 mysql.

示例json阅读:

  • Parsing values from a JSON file using Python?

示例json 写作:

  • How do I write JSON data to a file in Python?

您可以存储一个元组列表,每个元组包含特定顺序的数据(例如分数、姓名等)。然后,您可以使用 list.sort() 函数对列表进行排序,方法是定义一个函数 f 来比较分数并将该函数传递给 sort().