重複的縣級行政區劃名稱

黃志斌發表於2019-02-20

根據中華人民共和國民政部網站公佈的“2018年12月中華人民共和國縣以上行政區劃程式碼”,全國總共有三千多個縣級行政區劃。我寫了一個 C# 程式找出重複的縣級行政區劃名稱,得到如下結果:

朝陽區: 北京市 吉林省長春市
通州區: 北京市 江蘇省南通市
和平區: 天津市 遼寧省瀋陽市
河東區: 天津市 山東省臨沂市
長安區: 河北省石家莊市 陝西省西安市
橋西區: 河北省石家莊市 河北省邢臺市 河北省張家口市
新華區: 河北省石家莊市 河北省滄州市 河南省平頂山市
橋東區: 河北省邢臺市 河北省張家口市
城區: 山西省陽泉市 山西省晉城市 廣東省汕尾市
郊區: 山西省陽泉市 黑龍江省佳木斯市 安徽省銅陵市
新城區: 內蒙古自治區呼和浩特市 陝西省西安市
青山區: 內蒙古自治區包頭市 湖北省武漢市
鐵西區: 遼寧省瀋陽市 遼寧省鞍山市 吉林省四平市
鐵東區: 遼寧省鞍山市 吉林省四平市
海州區: 遼寧省阜新市 江蘇省連雲港市
西安區: 吉林省遼源市 黑龍江省牡丹江市
向陽區: 黑龍江省鶴崗市 黑龍江省佳木斯市
南山區: 黑龍江省鶴崗市 廣東省深圳市
寶山區: 黑龍江省雙鴨山市 上海市
普陀區: 上海市 浙江省舟山市
鼓樓區: 江蘇省南京市 江蘇省徐州市 福建省福州市 河南省開封市
西湖區: 浙江省杭州市 江西省南昌市
江北區: 浙江省寧波市 重慶市
永定區: 福建省龍巖市 湖南省張家界市
市中區: 山東省濟南市 山東省棗莊市 四川省內江市 四川省樂山市
白雲區: 廣東省廣州市 貴州省貴陽市
龍華區: 廣東省深圳市 海南省海口市
城中區: 廣西壯族自治區柳州市 青海省西寧市
城關區: 西藏自治區拉薩市 甘肅省蘭州市

嗯,都是“區”,沒有重複的“縣”和“市”。

相應的 C# 程式如下所示:

using System;
using System.IO;
using System.Collections.Generic;

static class Region
{
  static Dictionary<int, string> codes = new Dictionary<int, string>();

  static string GetProvinceAndCity(int code)
  {
    string city;
    codes.TryGetValue(code / 100 * 100, out city);
    return codes[code / 10000 * 10000] + city;
  }

  static void Main()
  {
    var names = new Dictionary<string, List<int>>();
    foreach (var s in File.ReadLines("2018-12.txt")) {
      var ss = s.Split();
      var code = int.Parse(ss[1]);
      var name = ss[3];
      codes.Add(code, name);
      List<int> value;
      if (!names.TryGetValue(name, out value))
        names.Add(name, value = new List<int>());
      value.Add(code);
    }
    foreach (var kvp in names) {
      if (kvp.Value.Count == 1) continue;
      Console.Write(kvp.Key + ":");
      foreach (var i in kvp.Value) Console.Write(" " + GetProvinceAndCity(i));
      Console.WriteLine();
    }
  }
}

相關文章