在 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().
我知道在 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.
或者暂时添加一个辅助函数,根据分数和名字拉入排序。
>>> 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().