1

我想根据它们的从该字典中复制对,以便将它们分配给新变量。根据我的研究,基于键执行操作似乎很容易 ,但在我的情况下,值就是我正在跟踪的值。

things = ({'alpha': 1, 'beta': 2, 'cheese': 3, 'delta': 4})

在虚构的语言中,我可以像这样分配变量 -

smaller_things =  all values =3 in things 
4

3 回答 3

2

您可以使用.items()遍历这些对并进行如下更改:

smaller_things = {}
for k, v in things.items():
    if v == 3:
        smaller_things[k] = v

如果你想要一个单行并且只需要返回键,列表理解将做到这一点:

smaller_things = [k for k, v in things.items() if v == 3]

>>> things = { 'a': 3, 'b': 2, 'c': 3 }
>>> [k for k, v in things.items() if v == 3]
['a', 'c']
于 2013-02-01T05:39:30.750 回答
0

这个答案是根据我对你问题的理解。字典是一种哈希表,字典的主要内涵是为值提供非整数索引。字典中的键就像索引一样。

假设考虑“数组”,数组中的元素由索引寻址,我们有元素的索引而不是索引的元素。就像我们在字典中的值有键(非整数索引)一样。

并且有一个暗示字典中的值是不可散列的,我的意思是字典中的值是可变的,字典中的键是不可变的,只是值可以随时更改。

简单地说,通过使用字典中的值来解决任何事情都不是好方法

于 2013-02-01T05:43:31.470 回答
0

您可以反转字典并从中提取:

keys_values = { 1:"a", 2:"b"}
values_keys = dict(zip(keys_values.values(), keys_values.keys()))
print values_keys
>>>  {"a":1, "b":2}

这样你就可以用标准的字典语法做任何你需要的事情。

潜在的缺点是如果您在原始字典中有非唯一值;原始中具有相同值的项目在反向字典中将具有相同的键,因此您不能保证哪个原始键是新值。并且可能某些值是不可散列的(例如列表)。

除非你有强迫自己聪明的需要,否则迭代项目更容易:

for key, val in my_dict.items():
    if matches_condition(val):
        do_something(key)
于 2013-02-01T05:44:11.003 回答