2013-12-02 2 views
0

Я использую Pyton 3,2 У меня есть следующий словарь:итерация по списку словаря

a = {"fruits":["apple","mangoes","grapes"],"colour":["apple","orange","grapes"],"number":["1","2","3"]} 

Мне нужно пройти по этому списку словаря, и я хочу, чтобы создать новый словарь б, в котором значение в плоды такое же значение в цветах:

b = {"fruits":["apple","grapes"],"colour":["apple", "grapes"],"number":["1","3"]} 

я думал, это может работать, но я потерял с тех пор:

b = {} 
for item in a: 
    if x in a[item]: 

...... не знаю, что теперь делать?

Как я могу это сделать без использования itertools? Есть ли общая функция, которую я могу использовать для любого словаря, кроме того, который я перечислил?

+1

Это на самом деле словарь со списками как значения, а не список словарей. – SethMMorton

ответ

0

В этом случае, вы лучше использовать set:

b = {"fruits": list(set(a['fruits']).intersection(a['colour'])} 
b['colour'] = b['fruits'] # or maybe make a copy here... 
0

Что-то вроде этого?

a = {"fruits":["apple","mangoes","grapes"],"colour":["apple","orange","grapes"]} 
b = {} 

b['fruits'], b['colour'] = [], [] 

for fruit in a['fruits']: 
    if fruit in a['colour']: 
     b['fruits'].append(fruit) 
     b['colour'].append(fruit) 
0

Если вы не хотите, номера в словаре результата, вы можете сделать это таким образом ...

Код:

a = {"fruits":["apple","mangoes","grapes"],"colour":["apple","orange","grapes"],"number":["1","2","3"]} 

b = dict() 
b['fruits'] = b['colour'] = [x for x in a['fruits'] if x in a['colour']] 

print b 

Выход:

{'colour': ['apple', 'grapes'], 'fruits': ['apple', 'grapes']} 

Надеюсь, это поможет :)

+0

если я хочу номера в словаре результатов, как бы я это сделал? если я хочу получить следующий результат (b = {"fruit": ["apple", "grapes"], "color": ["apple", "grapes"], "number": ["1", "3" ]}), как мне это сделать? – user3044013

+0

Просто добавьте эту строку ... b ['number'] = [a ['number'] .__ getitem __ (a ['fruit']. Index (x)) для x в b ['fruits']] рядом с b ['fruits'] = b ['color'] = [x for x в ['fruit'], если x в ['color']] –

+0

И, пожалуйста, проголосуйте за него .. если это поможет .. :) –

Смежные вопросы