2017-08-13 50 views
0

我想知道你如何使用一個變量中的值來做出解釋一個新的密鑰在Python 3.x的值加辭典鍵Python的 - 如何利用一個可變

例如

person = {'first_name': 'Jane', 'last_name': 'Doe'} 
new_dictionary = {} 
for k, v in person.items(): 
    new_dictionary.k = v 

我得到new_dictionary

{'k': 'Doe'} 

下如何獲得此輸出new_dictionary?

{'first_name': 'Jane', 'last_name': 'Doe'} 

SOLUTION(從下面):

new_dictionary[k] = v 

+0

你確定你的代碼,甚至跑沒有任何錯誤? –

+1

您嘗試過'new_dictionary [k] = v',並且出現了'new_dictionary。[k] = v'的en錯誤? –

+0

[真的嗎?](http://ideone.com/9PrJSR) –

回答

3

使用你將只設置'k'文本值屬性的符號new_dictionary.k。相反,使用索引符號:

person = {'first_name': 'Jane', 'last_name': 'Doe'} 
new_dictionary = {} 
for k, v in person.items(): 
    new_dictionary[k] = v 

獎勵:這也適用於其他語言,如JavaScript。

+4

'new_dictionary.k'甚至不能工作。 –

+0

是的。但是,您可以在某些類型的Python對象(包括某些字典子類)上使用屬性表示法,但當然不是標準的'dict'。我的觀點是,即使在那些情況下,在最寬容的假設下,你將要得到的最好的情況是設置字面值'k'鍵。 –

+0

BTW'new_dictionary [k] = v'正在引發'TypeError:對象不支持OP的項目分配'。所以它不回答這個問題。 –

0
new_dictionary = {**person} 

這將使用鍵值對從person字典創建new_dictionary

之後,你可以按如下更新:

new_dictionary = {**new_dictionary, **person_2} 

在Python這僅適用3.5+(PEP中提出448),感謝馬克Tolonen!

+0

'new_dictionary.update(person)'將不那麼深奧,並且可以在更廣泛的Pythons中工作。 –

+0

@MarkTolonen學習Python的表達特性是一個不錯的主意。此外,這個問題被標記爲Python 3.x –

+1

這隻適用於3.5+。順便說一句,不是downvoter ......只是一個評論。 –

1

喬納森·尤妮斯的回答不工作:

for k, v in person.items(): 
    new_dictionary[k] = v 

但是,你忘了刪除的點在你的代碼:

new_dictionary.[k] = v 

應該是:

new_dictionary[k] = v 
0

您也可以嘗試這樣:

person = {'first_name': 'Jane', 'last_name': 'Doe'} 
new_dictionary = {} 
for k, v in person.items(): 
    new_dictionary.setdefault(k, v) 

print(new_dictionary) 

輸出:

{'first_name': 'Jane', 'last_name': 'Doe'} 
+0

'new_dictionary = person.copy()'? –

+0

yep @AshwiniChaudhary。 '>>>人= { 'first_name的': '簡', 'last_name的': 'Doe的'} >>> new_dictionary = {} >>> new_dictionary = person.copy() >>> new_dictionary {'first_name':'Jane','last_name':'Doe'} ' –

1

我認爲你正在學習蟒蛇,所以你需要不同的方法來複制和字典等字典。

這裏有一些方法本: -

#First step create a dictionary 
a = {"first_name":"Jon", "last_name":"Doe"} 

#Approach 1: Using List comprehension 
b = {key:value for key, value in a.items()} 

#Approach 2: Initialise new dictionary and loop first to create new 
c = {} 
for key, value in a.items(): 
    c[key] = value 

#Approach 3:Using Deep copy function 
import copy  
d = copy.deepcopy(a) 

#Approach 4:Using Update function of dictionary 
e = {}  
e.update(a) 

#Finally Print all dicts 
print (a, b, c, d, e) 

#Below is Output of a,b,c,d,e:- 

({'first_name': 'Jon', 'last_name': 'Doe'}, {'first_name': 'Jon', 'last_name': 'Doe'}, {'first_name': 'Jon', 'last_name': 'Doe'}, {'first_name': 'Jon', 'last_name': 'Doe'}, {'first_name': 'Jon', 'last_name': 'Doe'}) 
1

關於嘗試如何`

person = {'first_name': 'Jane', 'last_name': 'Doe'} 
new_dictionary = {} 
for k in person.keys(): 
    new_dictionary[k] = person[k] 

print(new_dictionary)` 
相關問題