2013-02-01 36 views
0

我想根據它們的複製此字典中的字符串,因此可以將它們分配給新變量。從我的研究中,似乎很容易根據鍵進行this,但在我的情況下,這些值就是我正在跟蹤的值。基於值提取字典對

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

而且在虛構的語言,我可以指定像這樣的變量 -

smaller_things = all values =3 in things 

回答

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'] 
+1

+1使用'thing.iteritems()'如果蟒蛇2.x的 – wim

+0

正是我一直在尋找換我新的python和認識除了最後一行之外的一切,你能解釋它是如何工作的嗎? –

+0

@wim我正在運行2.7,兩者都以同樣的方式工作,所以它似乎。你是否對此有任何疑問? –

0

這個答案是根據我對你的問題的理解。 字典是一種散列表,字典的主要內容是提供對這些值的非整數索引。字典中的鍵就像索引一樣。

假設考慮「數組」,數組中的元素由索引尋址,並且我們有索引而不是索引元素。就像那樣,我們有字典中的值的鍵(非整數索引)。

還有一個含義是字典中的值是不可散列的我的意思是字典中的值是可變的,字典中的鍵是不可變的,只要值可以隨時更改。

根本就不是好方法,通過在字典中使用的值,以解決任何事情

+0

有效的點,但我正在計劃值的變化。最終,我將使用實時數據可視化,所以這些值將爲可視化的動畫「流」做出貢獻。但是,當您使用字典時,您還要重視最佳做法。 –

-1

你可以扭轉字典和那拉:

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) 
+0

-1這些值中的一些可能是不可能的,使得字典顛倒不可能。 – wim

+0

只是抓住:) – theodox

+0

@theodox應該有一個點系統暴露潛在的陷阱:] –