2016-06-16 3 views
-1

나는 사전 (d2)을 가지고 있으며 조건을 만족하는 키만 포함 된 새 사전 (new_dict)을 만들어야합니다.파이썬에서 사전의 키를 올바르게 업데이트하고 있습니까?

이 내 코드입니다 :

d2 = dict((y,x) for x,y in d.iteritems()) 

new_dict={} 
for name in list: 
    for keyx in d2: 
     if name in keyx:  
      new_dict=dict((keyx,d2[keyx]) for v in d2.itervalues()) 
      print new_dict  

하지만 new_dict를 인쇄 할 때 각 키에 대한 new_dict을 구하십시오

{key:value} 
{key2:value2} 
ecc.. 

은 어떻게 고유의 사전을 얻을 수 있습니까 ??

+0

가 대신 기존 사전을 돌연변이 시도? –

답변

3

예를 들어 설명해 보겠습니다.

>>> f={'c':1,'d':2,'e':3} 
>>> l=['c','d'] 
>>> {i:f[i] for i in f if any([k in i for k in l])} 
{'c': 1, 'd': 2} 

사용 사례는 간단합니다.

new_dict = {i:d2[i] for i in d2 if any([k in i for k in list])} 

list 같은 변수 이름을 사용하십시오 후렴, 말했다. 또한

, 대신

d2 = dict((y,x) for x,y in d.iteritems()) 

당신처럼 그냥 코드를 업데이트

d2 = {y:x for x,y in d.iteritems()} 
+0

고마워요! (당신 말이 맞아요, 여기 예제로만 목록을 사용했습니다;)) – Alice

1

을 할 수 -

d2 = dict((y,x) for x,y in d.iteritems()) 

new_dict={} 
for name in list: 
    for keyx in d2: 
     if name in keyx:  
      new_dict[keyx] = d2[keyx] 
      print new_dict 

뭘 잘못하고 한 것은 다시 사전을 제작하고, 다시 루프에 ...

당신이 쓸 때

-

new_dict[keyx] = dict('key' = 'something') 

새로운 사전이 만들어지고 그 문제의 이유는 ... 당신은 ... 다른 답변에서와 같이 더 파이썬 방법으로 그것을 해결할 수

1

매번 새 사전을 다시 만드는 대신 발견 한 새 항목으로 new_dict을 업데이트해야합니다. 다음은 예입니다 :

d2 = {'a': 1, 'b': 2, 'ab': 3} 
l = ['a'] 
new_dict = dict([(k, v) for k, v in d2.items() if any(x in k for x in l)]) 
print new_dict 

이 출력됩니다 :

{'a': 1, 'ab': 3} 
관련 문제