Python 3.6.0
我正在编写一个小程序,以下列形式获取用户输入: 城市,国家
然后我创建了一个关键字词典:国家/地区的价值对 是关键,城市是价值观。
但是,我希望将值(城市)片段作为列表以便用户使用 可以进入同一个国家的多个城市。
示例:
city1,country1 city1,country2 city2,country1
我接近这段代码:
destinations = {}
while True:
query = input("Tell me where you went: ")
if query == '':
break
temp = query.split(',')
if len(temp) != 2:
temp = []
continue
city = [query.split(',')[0]]
country = query.split(',')[1]
if country not in destinations:
destinations[country] = city
else:
destinations[country].append(city)
我的问题是,附加城市也是他们自己的名单。这是来自PyCharm:
destinations = {' country1': ['city1', ['city2']], ' country2': ['city1']}
我想要的是:
destinations = {' country1': ['city1', 'city2'], ' country2': ['city1']}
我知道为什么会发生这种情况,但是,我似乎无法弄清楚如何将其他城市添加到列表中,而不是每个城市都在其自己的列表中。
如果用户现在输入:city3,country1则目标{}应为:
destinations = {' country1': ['city1', 'city2', 'city3'], ' country2': ['city1']}
你明白了。
感谢。
答案 0 :(得分:2)
当您使用[].append([])
附加列表时,会追加列表本身,而不是实际内容。您可以做的与您目前的相似,但是当您设置变量city
时,请将其设置为实际文本本身,然后调整if
语句中的代码。
destinations = {}
while True:
query = input("Tell me where you went: ")
if query == '':
break
temp = query.split(',')
if len(temp) != 2:
temp = []
continue
city = query.split(',')[0] //set city to the string and not the string in a list
country = query.split(',')[1]
if country not in destinations:
destinations[country] = [city] //now the value for the key becomes an array
else:
destinations[country].append(city)
答案 1 :(得分:1)
只需更改列表创建的位置
destinations = {}
while True:
query = input("Tell me where you went: ")
if query == '':
break
temp = query.split(',')
if len(temp) != 2:
temp = []
continue
city = query.split(',')[0]
country = query.split(',')[1]
if country not in destinations:
destinations[country] = [city] # <-- Change this line
else:
destinations[country].append(city)