1.xml과 같은 파일 이름을 가진 사전이 있고 3과 12와 같은 DeviceID가 있습니다.
{'1.xml': ['3', '12'], '2.xml': ['23', '17''], '3.xml': ['1', '12']}
그리고 DeviceID를 비교하고 중복이있을 때 표시하는 코드가 있습니다. 지금은 모든 파일에 DeviceID가 포함 된 경우에만 작동합니다. 이 코드를 실행할 때 :
it = iter(dict.values())
intersection = set(next(it))
print(intersection)
for vals in it:
intersection &= set(vals)
그것은 반환
set()
DeviceID는 첫 번째와 세 번째 파일에만 있고 두 번째 파일에는 없기 때문입니다. 누군가 가이 코드를 수정하여 일부 파일에서만 중복되는 경우 DeviceID를 표시하도록 도울 수 있습니까?
set
사전에 새 값이 그들을 포함하지 않는 경우 교차로는 이전의 모든 중복 삭제합니다. 그래서 대신의 set
, 당신은 사용할 수 있습니다 MULTISET을 - collections.Counter
각 횟수를 세어 얻을 - 의 DeviceID가 에 표시되는 파일 이름-의 DeviceID : 사전
from collections import Counter
d = {'1.xml': ['3', '12'], '2.xml': ['23', '17'], '3.xml': ['1', '12']}
c = Counter(i for val in d.values() for i in val)
print(c)
# Counter({'12': 2, '1': 1, '17': 1, '23': 1, '3': 1})
print(c.most_common(1))
# [('12', 2)]
항목이 많고 most_common
중복 된 ID를 얻기 위해 전달할 번호가 확실하지 않은 경우 다음을 사용할 수 있습니다.
dupe_ids = [id for id, count in c.items() if count > 1]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다