0

在第一个 for 循环之后,我的字典缩小了,我在 for 循环的末尾只剩下一个键值对,如结果所示。最后以某种方式给出了字符串错误。谁能建议我对字典有什么不了解?

states = {
           'Bagmati' : 'BG',
           'Gandaki' : 'GD',
           'Karnali' : 'KL',
           'Janakpur' : "JK",
           'Mechi' : 'MC'
           }

cities = {
            'BG' : 'Kathmandu',
            "GD" : "Pokhara",
            "KL" : "Jumla",
            "MC" : 'Jhapa'
            }
            

cities['BG'] = 'Hetauda'
cities['MC'] = 'Taplejung'
cities['BG'] = 'Ramechap'
cities['JK'] = 'Dhanusha'

print(f'1. {states}')

for states, abbrev in list(states.items()):
    print(f'the {states} is abbreviated as {abbrev}')
print(states)
print(cities)    
#print every city and states
for abbrev, cities in list(cities.items()):
    print(f'the {abbrev} state has {cities} city')
print(f'2. {states}')
print(f'3. {cities}')
# now lets access both the states and cities dictionaries
for states, abbrev in list(state`enter code here`s.items()):
    print(f' the {states} state is abbreviated as {abbrev}')
    print(f' and has the city {cities[abbrev]}')
    

结果:

C:\Users\Prabin\Desktop\Desktop\personal-projects\mystuff\39. Dictionaries>python new12.py
1. {'Bagmati': 'BG', 'Gandaki': 'GD', 'Karnali': 'KL', 'Janakpur': 'JK', 'Mechi': 'MC'}
the Bagmati is abbreviated as BG
the Gandaki is abbreviated as GD
the Karnali is abbreviated as KL
the Janakpur is abbreviated as JK
the Mechi is abbreviated as MC
Mechi
{'BG': 'Ramechap', 'GD': 'Pokhara', 'KL': 'Jumla', 'MC': 'Taplejung', 'JK': 'Dhanusha'}
the BG state has Ramechap city
the GD state has Pokhara city
the KL state has Jumla city
the MC state has Taplejung city
the JK state has Dhanusha city
2. Mechi
3. Dhanusha
Traceback (most recent call last):
  File "new12.py", line 36, in <module>
    for states, abbrev in list(states.items()):
AttributeError: 'str' object has no attribute 'items'
4

3 回答 3

0

正如@jumpa 提到的,您将字典名称重新用作另一个变量。

试试这个更新:

for state, abbrev in list(states.items()):
    print(f'the {state} is abbreviated as {abbrev}')
print(states)
print(cities)    
#print every city and states
for abbrev, city in list(cities.items()):
    print(f'the {abbrev} state has {city} city')
print(f'2. {states}')
print(f'3. {cities}')
# now lets access both the states and cities dictionaries
for state, abbrev in list(states.items()):
    print(f' the {state} state is abbreviated as {abbrev}')
    print(f' and has the city {cities[abbrev]}')
于 2020-11-01T19:51:42.190 回答
0

问题是在这些行中:

for abbrev, cities in list(cities.items()):
    print(f'the {abbrev} state has {cities} city')

您正在覆盖变量的原始值cities。并且,它将保存由给出的循环中的最后一个值cities.items()

只需在循环中使用另一个变量。您的代码将如下所示:

for state, abbrv in list(states.items()):
    print(f'the {states} is abbreviated as {abbrv}')
print(states)
print(cities)    
#print every city and states
for abbr, city in list(cities.items()):
    print(f'the {abbr} state has {city} city')
print(f'2. {states}')
print(f'3. {cities}')
# now lets access both the states and cities dictionaries
for state, abbrv in states.items():
    print(f' the {states} state is abbreviated as {abbrv}')
    print(f' and has the city {cities[abbrv]}')
于 2020-11-01T19:57:15.337 回答
-2

如果您检查行号。34 引用类型 `` 在 python 中不被接受。相反,您应该使用 '' 或 " " 类型的引号。同样在状态循环中,list(state enter code heres.items())中的缩写 使其用于状态,列表中的缩写(states.items())

于 2020-11-01T19:52:00.093 回答