2014-11-26 3 views
1

У меня есть два разделенных разделами разделов с несколькими столбцами. Я использовал 2 словаря, чтобы сохранить конкретную колонку, представляющую интерес.Сравнение двух словарей и печати общих

import csv 
dic1={} 
dic2={} 
with open("Table1.tsv") as samplefile: 
    reader = csv.reader(samplefile, delimiter="\t") 
    columns = zip(*reader) 
    for column in columns: 
     A, B, C, D = columns 

with open("Table2.tsv") as samplefile1: 
    reader = csv.reader(samplefile1, delimiter="\t") 
    columns = zip(*reader) 
    for column1 in columns: 
     A1, B1, C1 = columns 

dic1['PMID'] = A # the first dictionary storing the data of column "A" 
dic2['PMID'] = A1 # the second dictionary storing the data of column "A1" 

# statement to compare the data in dic1[PMID] with dic2['PMID'] and print the common 

Проблема: Какова правильная логика/или условный оператор использовать для сравнения двух словарей и печать общих данных в обоих.

+1

возможно дубликат [Сравнение двух словарей в Python] (HTTP://stackoverflow.com/questions/4527942/comparing-two-dictionaries-in-python) – fredtantini

+1

Если я правильно понимаю ваш вопрос, то, что вы действительно хотите сравнить, это 2 ** списки ** 'A' (первый столбец первого csv) и 'A1' (первый столбец или второй csv). Это правда ? –

+0

Точно это моя цель – MEhsan

ответ

1

Вы можете использовать пересечение множеств как:

>>> d1={'a':2,'b':3,'c':4,'d':5} 
>>> d2={'a':2,'f':3,'c':4,'b':5,'q':17} 
>>> dict(set(d1.items()) & set(d2.items())) 
{'a': 2, 'c': 4} 

для вашей конкретной проблемы, это код:

>>> dic1={} 
>>> dic2={} 
>>> dic1['PMID']=[1,2,34,2,3,4,5,6,7,3,5,16] 
>>> dic2['PMID']=[2,34,1,3,4,15,6,17,31,34,16] 
>>> common=list(set(dic1['PMID']) & set(dic2['PMID'])) 
>>> common 
[1, 2, 3, 4, 6, 34, 16] 
+0

Ваши отзывы ценны ... Но я не уверен, как использовать 'dict' и' set' для 'dic1 ['PMID'] = A' и' dic2 ['PMID'] = A1' для печати общий в обоих. Не могли бы вы показать мне, как применить ваш пример в этом случае? @bhat irshad – MEhsan

+1

@ Бахрани, я обновил код. Надеюсь, он исправит проблему ... –

+0

Спасибо большое ... Я очень ценю ваш вклад :) – MEhsan