文档内容如下:
(数据对) (信息)
----------------- ------------------------
1 2 3 4 5
----------------- ------------------------
pr333 sd23a2 thisisa 1001 1005
pr333 sd23a2 sentence 1001 1005
pr33w sd11aa we 1022 1002
pr33w sd11aa have 1022 1002
pr33w sd11aa adream 1033 1002
......
第 1, 2 列作为一个 数据对
如果前两列相同,判断后面的是否相同,如果不同就连接起来,合并成一行
如同下面的效果:
pr333 sd23a2 thisisa|sentence 1001 1005
pr33w sd11aa we|have|adream 1022|1033 1002
....
小白,不懂怎么做,只能想到用字典,好像又行不通,求各位大神帮忙
阿神2017-04-17 17:52:17
출력 순서를 유지하려면 OrderedDict
을 사용해야 합니다. 키는 OrderedDict
을 사용하여 순서를 유지합니다. 엉망이 되려면 list
을 사용하여 순서를 유지하세요.set
으아악
阿神2017-04-17 17:52:17
이 코드에 대한 모든 고려 사항을 설명하세요.
첫 번째는 순서입니다. 여기서 순서는 두 부분으로 구성됩니다. 하나는 출력 라인의 순서이고 다른 하나는 항목이 병합된 후의 순서입니다. 우리는 다음을 관찰했습니다:
으아악다음으로 변경:
으아악출력 라인의 순서를 고려해야 합니다. pr333이 pr33w보다 앞에 옵니다
프로젝트 병합 후 순서를 고려해야 합니다. thisisa가 문장 앞에 옵니다
이것은 우리가 사용하는 데이터 유형이 순서를 유지할 수 있어야 한다는 것을 의미합니다
둘째는 속도입니다. 효율성을 위해서는 매핑 유형을 사용하는 것이 좋습니다.
세 가지 고려 끝에 moling3650의 말대로 OrderedDict
가 좋은 선택입니다. 이렇게 하면 라인 출력 문제를 해결할 수 있지만 병합 프로젝트에서는 값이 아닌 키만 사용하면 되므로 OrderedDict
를 사용하는 것이 아쉽습니다. 그러나 현재 표준 라이브러리에는 OrderSet
옵션이 없습니다. 그래서 나는 그것을 해야 한다.
OrderedDict에 대한 자세한 내용은 OrderedDict를 참조하세요
사실 타사 라이브러리인 OrderedSet
이 있거나 직접 구현할 수도 있습니다. OrderedSet(Python 레시피)
마지막으로 linke7en은 이런 문서 처리 문제에 대해 아주 좋은 점을 가지고 있습니다. 동시에 읽고 쓸 수 있다면 읽기와 처리를 동시에 하는 것이 확실히 효율적입니다<🎜. > (한 번 방문하면 문서 처리만 하면 되기 때문에)() 및 討論請見評論部分 moling 大的觀點
자원 절약(출력이 즉시 완료되므로 데이터 저장을 위한 공간을 낭비할 필요가 없습니다). 그러나 중복된 데이터 쌍이 여러 행에 걸쳐 나타날 수 있다는 점을 고려하면 여전히 안정성을 보장하기 위해 더 많은 리소스를 소비해야 합니다.
코드(Python3): 으아악
첫 번째는
수업 신청입니다. slice
시퀀스 유형 슬라이싱에 익숙해야 합니다. 으아악
은 실제로 다음과 같이 쓸 수 있습니다:으아악
어떤 혜택이 있나요?이 기능을 사용하여 슬라이스 이름을 지정할 수 있습니다. 이 질문의 코드를 예로 들면, 원래는
데이터 쌍과 기타 데이터를 추출하려고 했습니다. 으아악
그러나 이 방법은 실제로 읽을 만큼 명확하지 않습니다. 따라서 이 두 범위에 이름을 지정할 수 있습니다.으아악
더 우아하고 읽기 쉬운 방식으로의 값을 얻을 수 있습니다. items
입니다. 이 기능은 매우 실용적입니다. 예를 들면 다음과 같습니다. setdefault
으아악
이 사전(또는 다른 일치하는 매핑 유형)에 있으면 key
을 반환합니다. 그렇지 않으면 반환 시 자동으로 사전에 새 키-값 쌍 dic[key]
이 삽입되고 <🎜가 반환됩니다. >. dic[key] = default_value
default_value
이 기술은 중첩된 튜플을 해체하는 데 쉽게 사용할 수 있습니다.
말이 너무 많다고 욕 안해주셔서 다들 감사합니다...