2

从 db 我得到以下数据。然后我正在根据这些数据准备一个 python 字典。现在我想为每一行分配一种颜色,但是有一个条件。如果一个代码区与多个拉链相关联,则该行将变为灰色。与单个拉链相关的区域将获得其他颜色。如何根据以下数据准备字典。

+----------+-------+--------------+
| codeZone | ZipCd | Longitude    |
+----------+-------+--------------+
| Zone 81  | 13064 | -76.70275100 |
| Zone 81  | 13143 | -76.73114800 |
| Zone 81  | 13146 | -76.76016600 |
| Zone 72  | 13148 | -76.78488000 |
| Zone 72  | 13165 | -76.87704600 |
| Zone 50  | 14011 | -78.28090700 |
| Zone 50  | 14020 | -78.19062500 |
| Zone 50  | 14058 | -78.15694600 |
| Zone 50  | 14098 | -78.37735300 |
| Zone 50  | 14103 | -78.38546900 |
| Zone 50  | 14125 | -78.27249300 |
| Zone 50  | 14143 | -78.08089700 |
| Zone 50  | 14411 | -78.20223900 |
| Zone 81  | 14413 | -76.98321400 |
| Zone 60  | 14414 | -77.73609300 |
| Zone 50  | 14416 | -77.98543200 |
| Zone 72  | 14418 | -77.21132300 |
| Zone 14  | 14420 | -77.92950200 |
| Zone 50  | 14422 | -78.07160700 |
| Zone 60  | 14423 | -77.84307800 |
| Zone 71  | 14424 | -77.30122500 |
| Zone 70  | 14425 | -77.31024000 |
| Zone 61  | 14427 | -78.04682800 |
| Zone 16  | 14428 | -77.81500000 |
+----------+-------+--------------+

我的数据看起来有点像这个

[{'zone': 1, 'zip': 1, 'spec': a}, {'zone': 1, 'zip': 2, 'spec': m}, {'zone': 2, 'zip ':3,'规格':PC}]

现在区域 1 与 zip 1 和 zip 2 相关联。区域 2 仅与 zip 3 相关联。所以我想为字典分配第四个键(即颜色),这将基于区域的计数(如果超过一个区域然后是灰色)。因此对于 zip 1 和 zip 2,颜色将为灰色。对于 zip 3 任何其他颜色。

4

1 回答 1

2

计算每个区域的邮政编码,然后在映射中包含该信息:

from collections import defaultdict

zipcount = defaultdict(set)
for zone, zip, longitude in datarows:
    zipcount[zone].add(zip)

# Create the output dictionary
output_dict = {}
for zone, zip, longitude in datarows:
    count = len(zipcount[zone])
    # adjust output dictionary based on the count (1 or more)
于 2013-03-13T15:01:34.387 回答