【发布时间】:2020-11-23 17:36:49
【问题描述】:
我有一本字典,里面全是状态,它们的缩写映射到它们的实际名称。我想对它们进行迭代,因为我想让任务更容易(不想为每个状态都写出来)。到目前为止,我有一本这样的字典
state_dict = {
'AK': 'ALASKA',
'AL': 'ALABAMA',
'AR': 'ARKANSAS',
'AS': 'AMERICAN SAMOA',
'AZ': 'ARIZONA ',
'CA': 'CALIFORNIA ',
'CO': 'COLORADO ',
'CT': 'CONNECTICUT',
'DC': 'DISTRICT OF COLUMBIA',
'DE': 'DELAWARE',
'FL': 'FLORIDA',
'FM': 'FEDERATED STATES OF MICRONESIA',
'GA': 'GEORGIA',
'GU': 'GUAM ',
'HI': 'HAWAII',
'IA': 'IOWA',
'ID': 'IDAHO',
'IL': 'ILLINOIS',
'IN': 'INDIANA',
'KS': 'KANSAS',
'KY': 'KENTUCKY',
'LA': 'LOUISIANA',
'MA': 'MASSACHUSETTS',
'MD': 'MARYLAND',
'ME': 'MAINE',
'MH': 'MARSHALL ISLANDS',
'MI': 'MICHIGAN',
'MN': 'MINNESOTA',
'MO': 'MISSOURI',
'MP': 'NORTHERN MARIANA ISLANDS',
'MS': 'MISSISSIPPI',
'MT': 'MONTANA',
'NC': 'NORTH CAROLINA',
'ND': 'NORTH DAKOTA',
'NE': 'NEBRASKA',
'NH': 'NEW HAMPSHIRE',
'NJ': 'NEW JERSEY',
'NM': 'NEW MEXICO',
'NV': 'NEVADA',
'NY': 'NEW YORK',
'OH': 'OHIO',
'OK': 'OKLAHOMA',
'OR': 'OREGON',
'PA': 'PENNSYLVANIA',
'PR': 'PUERTO RICO',
'RI': 'RHODE ISLAND',
'SC': 'SOUTH CAROLINA',
'SD': 'SOUTH DAKOTA',
'TN': 'TENNESSEE',
'TX': 'TEXAS',
'UT': 'UTAH',
'VA': 'VIRGINIA ',
'VI': 'VIRGIN ISLANDS',
'VT': 'VERMONT',
'WA': 'WASHINGTON',
'WI': 'WISCONSIN',
'WV': 'WEST VIRGINIA',
'WY': 'WYOMING'
}
for k, v in state_dict.items():
print("""if (c_state_code.equals("{k}"))
{
out_state_code = "{v}";
}""").format(k, v)
但是我得到 'NoneType' 对象没有属性 'format,我什至尝试了 .format 中的 **attrs 但得到了同样的错误。
【问题讨论】:
-
因为
print返回None而你正在调用print(...).format(k,v) -
我不知道您想要实现什么,但看起来您正在尝试使用 python dict 以另一种语言(Java?C#?)生成代码。这就引出了一个问题:为什么不使用该语言中的等效映射(即 HashMap)?
-
是的,我使用 Python 在 Java 中创建代码,因为我不想全部输入,而且我对 Java 一点也不满意,Python 是我的主要语言。
-
@Alex 好吧,拥有 51 个
if分支是相当混乱的,而不是使用 Java HashMap(这不是很难学习),但我想每个人都有自己的 :) -
我将不得不深入研究一下 hashmap,感谢您的建议,是的,这是相当多的 if 语句,所以是的,您可能有一点。
标签: python dictionary iteration string-interpolation