【问题标题】:adding item to dictionary python with a variable name key使用变量名称键将项目添加到字典 python
【发布时间】:2012-10-04 17:43:29
【问题描述】:

我从项目列表中创建了一个长度为 n 的可能组合列表,现在我想创建一个字典,其中每个键都是可能组合列表中的项目之一,所以我可以开始计数每个组合在一组观察中出现多少次(编程关联规则引擎的早期阶段)。这是我所拥有的:

import itertools
stuff=(1,2,3,4)
n=1
combs=list()
while n<=len(stuff):
    combs.append(list(itertools.combinations(stuff,n)))
    n = n+1
print combs
viewers={'Jim':(1,3,4), 'Bob':(1,2,4), 'Jerry':(1,4), 'Ben':(2), 'Sal':(1,4)}  
showcount={}
for list in combs:
    for item in list:
        showcount["%s",%(item)]=0
print viewers
print showcount

如何让该项目显示为字典中的键?例如,我希望组合 '(1,2,4):0' 成为键值对,这样我以后可以计算 '(1,2,4)' 出现的次数。我对 Python 很陌生,但我确实四处寻找答案,但找不到。抱歉,如果这个问题已经得到解答,我只是找不到它。

【问题讨论】:

  • (1,2,3) 存储为值而不是键有什么问题。
  • 这是另一个问题,您可以通过尝试回答问题 - 元组可以作为字典键。
  • 问题不在于使用元组作为键,问题在于如何遍历元组列表并让python在字典中为每个元组创建一个键。

标签: python list dictionary


【解决方案1】:

您可以使用元组作为键:

mydict = { (1, 2, 4): 0 }

如果你想数数,看看collections.Counter,它让数数变得很简单,无需将键初始化为0:

counts = collections.Counter()
counts[(1, 2, 4)] += 1

【讨论】:

  • 但是如何让 python 遍历元组列表并将每个元组作为键添加到字典中?这就是问题,对不起,如果我措辞不好。据我所知,showcount["%s",%(item)]=0 是问题所在。
  • @TomR:不,只需showcount[item] += 1 就足够了。 没有需要 showcount[item] = 0,因为 Counter 会自动为您将每个新键设置为 0。你可以直接使用item作为key,不需要转成字符串。
猜你喜欢
  • 1970-01-01
  • 2022-10-13
  • 2013-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多