【问题标题】:Optimization of data input数据输入优化
【发布时间】:2018-03-24 11:59:25
【问题描述】:

我有一个数组,我想在新用户投票时增加它的元素。 例如,如果有 10 个选项,从 1 到 10,并且一位用户投票i=3,那么编写起来很容易:

A[i] = A[i] + 1;

如果选项从“A”到“I”,我该怎么做?因为我不能用字母来指向特定的数组元素。

对于几千个用户,我不想做一个嵌入式循环,在其中搜索数组的所有元素以查看每次选择“i”对应于哪个元素。

我可以在 O(n) 时间内完成吗?

【问题讨论】:

  • 您可以将字母转换为数字,然后将其用作索引。如何做到这一点取决于语言。例如C 将是i=option-'A'
  • 请添加语言标签或与语言无关的标签
  • @LoztInSpace 感谢您的回答!语言是 python。
  • 使用字典而不是列表。然后是 O(1) 递增(一次 - O(n) 对于 n 个用户)
  • 你能提供一个输入和输出的例子吗(见Minimal, Complete, and Verifiable example

标签: python loops optimization


【解决方案1】:

就像使用字典一样简单,字典就像一个数组,其中没有索引,你有一个键,每个键都有一个值。欲了解更多信息,请访问https://www.tutorialspoint.com/python/python_dictionary.htm

因此,在您的示例中,只需像这样定义一个字典:

data = {'A': 0, 'B': 0, 'C': 0 .....}

然后找到您要投票的字母并增加它:

data['A'] += 1
print(data['A'])
>>> {'A': 1, 'B': 0, 'C': 0}

甚至你可以在字典里面有字典,例如:

data = {'A': {'Votes':0, 'Description': ''}, 'B': {'Votes':0, 'Description': ''}, 'C': {'Votes':0, 'Description': ''} .....}
data['A']['Votes'] += 1

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 2015-10-05
    • 2019-04-01
    • 2023-03-24
    • 1970-01-01
    • 2023-04-10
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多