python dictionary with repetition of key and value
我有两个数组,如下所示:
1 2 | a=['history','math','history','sport','math'] b=['literature','math','history','history','math'] |
我压缩了两个数组,并使用字典来查看键和值是否相等打印它们,但是字典没有打印重复的案例,它只打印一个案例,我需要所有案例,因为我需要重复的时间。
我的代码:
1 2 3 4 | combined_dict={} for k , v in zip(a,b): combined_dict[k]=v print(combined_dict) |
号
在字典中,没有重复的键。所以当你在第一个循环之后有了
为什么不通过
1 2 3 | for k, v in zip(a, b): if k == v: print(k, v) |
如果您希望一个键有多个值,那么可以使用来自
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | >>> from collections import defaultdict >>> d = defaultdict(list) >>> for k, v in zip(a, b): ... d[k].append(v) ... >>> print(d) defaultdict(<type 'list'>, {'sport': ['history'], 'math': ['math', 'math'], 'history': ['literature', 'history']}) >>> print(list(d.items())) [('sport', ['history']), ('math', ['math', 'math']), ('history', ['literature', 'history'])] >>> for k, v in d.items(): ... if k in v: ... print k, v ... math ['math', 'math'] history ['literature', 'history'] |
号
对于两个条目,
试试这个:
1 2 3 4 5 6 7 8 | from collections import defaultdict a=['history','math','history','sport','math'] b=['literature','math','history','history','math'] combined_dict = defaultdict(list) for k, v in zip(a,b): combined_dict[k].append(v) print combined_dict |
如果要获取所有项目的列表,并且两个列表之间存在匹配项,请尝试
1 2 | >>> print [k for k, v in zip(a, b) if k == v] ['math', 'history', 'math'] |
。
这将为您提供一个匹配项的列表,然后您可以进一步处理该列表。