我有一本字典,我正在尝试检查所有具有相同数值的值的罕见情况,例如1.如何以有效的方式进行此操作?
答案 0 :(得分:20)
我认为你的意思是值:
d = {'a':1, 'b':1, 'c':1}
len(set(d.values()))==1 # -> True
如果您想检查特定值,那么
testval = 1
all(val==testval for val in d.values()) # -> True
此代码通常会提前(快速)失败
答案 1 :(得分:1)
您不能拥有具有相同值的键* s *。这意味着您的字典中只有一个键,因为后续的每个键都会覆盖前一个键。如果您担心所有键的值都是1。然后你做这样的事情:
if set(your_dict.values()) == set([1]):
pass
答案 2 :(得分:1)
受this other question的一些讨论启发:
>>> def unanimous(seq):
... it = iter(seq)
... try:
... first = next(it)
... except StopIteration:
... return True
... else:
... return all(i == first for i in it)
...
>>> unanimous("AAAAAAAAAAAAA")
True
>>> unanimous("AAAAAAAAAAAAB")
False
使用unanimous
查看所有dict值是否相同:
>>> dd = { 'a':1, 'b':1, 'c':1 }
>>> print unanimous(dd.values())
True
答案 3 :(得分:0)
你也可以试试这个:
>>> test
{'c': 3, 'b': 3, 'd': 3, 'f': 3}
>>> z=dict(zip(test.values(),test.keys()))
>>> z
{3: 'f'}
>>> len(z) == 1
True
>>> test
{'c': 3, 'b': 3, 'd': 3, 'f': 3}
>>> z=dict(zip(test.values(),test.keys()))
>>> z
{3: 'f'}
>>> len(z) == 1
True