【发布时间】:2011-04-11 17:21:11
【问题描述】:
我正在尝试创建一个循环遍历列表的脚本。
我需要查看能力标识符的有限列表 (400)(例如 124、129 等 - 正常整数)
然后我有一本字典,记录了每个用户的能力。 Key 是用户名,每个 key 的 value 是一个整数列表(即用户拥有哪些能力)
例如
User x - [124, 198, 2244 ...]
User Y - [129, 254, 198, 2244 ...]
我希望编译一个矩阵,突出显示每种能力与其他所有能力发生的频率 - 一个邻接矩阵。
例如,在上述示例中,能力 198 和能力 2244 出现了两次。而能力 254 和 124 从未同时出现。
我目前正在使用此代码:
fe = []
count = 0
competency_matches = 0
for comp in competencies_list:
common_competencies = str("")
for comp2 in competencies_list:
matches = int(0)
for person in listx:
if comp and comp2 in d1[person]:
matches = matches + 1
else:
matches = matches
common_competencies = str(common_competencies) + str(matches) + ","
fe.append(common_competencies)
print fe
print count
count = count + 1
这不起作用,只是返回每种能力总体上出现的次数。我认为问题出在“if comp and comp2 in d1[person]:”行。
问题是,例如,如果一个人具有以下能力 [123、1299、1236],而我搜索了能力 123,由于出现在 123 和 1236 条目中,这将被返回两次。使用 if __ 和 __ then 操作时是否存在强制完全匹配的方法。
或者有没有人对如何实现这一点提出改进建议...
提前感谢您的任何指点。干杯
【问题讨论】:
-
common_competencies = str("")??? Python 不是 Java。 some_var = '' 已经足够好了
-
@RestRisiko:你是怎么用 Java 写的?
-
不知道 - 但在这里使用 str(..) 没有意义
-
@khachik 我不是 Java 粉丝,但 Java 确实有字符串文字。 :)
-
@Chris Taylor:你在哪里见过像这样使用
and的代码?您能提供报价或链接或参考吗?这是非常非常错误的事情。你在哪里看到的?
标签: python list if-statement dictionary