【问题标题】:Empty set trying to build dictionary for discord bot空集试图为不和谐机器人构建字典
【发布时间】:2021-04-18 02:18:30
【问题描述】:

我正在尝试为不和谐机器人构建字典。数据结构如下所示:

poll = {
  'LINK' : {'MoonRaccoon' : 1, 'TheDirtyTree' : 1},
  'ZRX' : {'MoonRaccoon' : 1, 'Dontcallmeskaface' : 1, 'TheDirtyTree' : 1},  
  'XRP' : {'Dontcallmeskaface' : 1},
  'XLM' : {'aeon' : 1, 'Bob' : 1} 
}

这将被保存到 Repl.it 数据库中的 db["poll"] 中。 https://docs.repl.it/misc/database 我猜这只是一个持久的字典? (我认为这与我遇到的问题无关)

用户将输入他们的投票喜欢

!v ZRX

然后机器人需要将该“投票”添加到字典中。

我试图这样做的代码是这样的:

更新:

def update_poll(ticker,requestor):
  vote = {ticker : {requestor : 1}}

for (key, value) in vote.items():
    if 'poll' not in db.keys():
        db['poll'] = []
    if key in db['poll'].keys():
        db['poll'][key].append(value)
    else:
        db['poll'][key] = value

虽然进展不顺利.. 以前有人建议使用defaultdict,但老实说,我还没有能够将我的大脑包裹起来。 python新手在这里..

任何建议将不胜感激。

【问题讨论】:

  • 所以你想要一个持久字典?
  • Repl.it 提供带有 db 变量的持久字典。我只需要弄清楚如何使用它。当我用上面的测试数据集加载它时,它似乎工作正常。当我尝试一个一个地添加项目时,效果并不好。
  • 只有一个问题。你为什么不直接在文件中腌制一个普通的字典来保存它?
  • 顺便说一句,一旦我弄清楚如何一件一件地添加项目,我也希望能够一件一件地把它们拿走。基本上从股票代码字典中删除用户名,直到其中有 0 个项目,在这种情况下,股票代码键将被删除。
  • 这是我第一次尝试构建一个不和谐的机器人,老实说,我对此知之甚少。在 Repl 上找到了一个关于构建机器人的教程,因此尝试使用他们首先提供的工具。如果我最终在其他地方运行机器人,我想我将需要另一个解决方案。它适用于上述测试数据结构,所以看来我的问题在于操纵该数据结构。

标签: python discord.py associative-array repl.it


【解决方案1】:

试试这个:

ticker = 'a'; requestor = 'b'
vote = {ticker : {requestor : 1}}
db = {}
for (key, value) in vote.items():
    if 'poll' not in db.keys():
        db['poll'] = {}
    if key in db['poll'].keys():
        db['poll'][key].append(value)
    else:
        db['poll'][key] = value

【讨论】:

  • 嗯.. 看起来很有希望
  • ` for (key, value) in vote.items(): NameError: name 'vote' is not defined `
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 2021-11-28
  • 2018-03-20
  • 2019-01-21
  • 2020-07-03
  • 2020-09-23
  • 2021-10-30
相关资源
最近更新 更多