我正在学习字典,而且我知道我可以通过创建另外两个字典来实现这一点,但为了简洁起见,我想让代码更简洁,而不是再创建两个字典。 dict(最后,我为这个dict编写的所有内容都必须写在其他内容中),所以我想我比任何事都更好奇。我知道我不应该使用for循环,但我不知道另一种方式,就LPTH吸吮而言,我必须从某个地方开始。
问题1:如何让这个循环遍历每个州/缩写/城市?我是否只需制作多个词组或一系列列表并使用它们? 问题2:为什么这段代码运行for循环11次?
states1 = {
'1': 'Oregon', 'a': 'OR','population': '1000',
'2': 'Florida', 'b': 'MI', 'population': '1000',
'3': 'California', 'c': 'CA', 'population': '1000',
'4': 'NewYork', 'd': 'NY', 'population': '1000',
'5': 'Michigan','e': 'MI','population': '1000',
}
for city, pop, in states1.items():
print "%s has the abbreviation %s and a population of %s" %states1['1'], states1['a'], states1['population'])
答案 0 :(得分:1)
理想情况下,您拥有一个同质的数据结构 - 例如list
dict
1 。dict
每个states1 = [
{'name': 'Oregon', 'abbrev': 'OR', 'population': 1000},
{'name': 'Florida', 'abbrev': 'FL', 'population': 1000},
...,
]
都会保存有关特定州的信息:
for state in states1:
print print "%s has the abbreviation %s and a population of %s" % (state['name'], states['abbrev'], states['population'])
现在你的循环看起来像这样:
'name'
这里的好处有望清楚。对于任何给定的状态,您以相同的方式检索相关信息(状态的名称始终可通过abbrev_to_state = {state['abbrev']: state for state in states1}
florida_data = abbrev_to_state['FL']
new_hampshire_data = abbrev_to_state['NH']
...
键访问)。
如果您需要州名称的映射(例如,您希望通过缩写查找一堆州的人口),您可以通过创建词典来轻松实现...
collections.namedtuple
1 这里还有其他选项......您可以使用自定义类,但这似乎也是public function projects()
{
return $this->hasMany('App\Models\Project');
}
列表的一个很好的候选者,假设您不是#39;计划改变数据。
答案 1 :(得分:0)
您可以将每个值设为列表。
我不明白你想要实现什么,但简单的方法是:
states1 = {
1: ["Oregon", "OR", 1000]
2: ["Florida", "FL", 1000]
3: ["Pythonville", "PY", 1000]
4: ["Dictville", "DI", 1000]
}
您可以查看的另一件事是named tuple,它是我最喜欢的数据结构之一,可用于快速组织数据。
from collections import namedtuple
CityInfo = namedtuple("CityInfo", ["Name", "Abbr", "Pop"])
states1 = {
1: CityInfo("Oregon", "OR", 1000),
2: CityInfo("Florida", "FL", 1000),
3: CityInfo("Pythonville", "PY", 1000),
4: CityInfo("Dictville", "DI", 1000)
}
for city in states1.values():
print("{} has the abbreviation {} and a population of {}".format(city.Name, city.Abbr, city.Pop))
答案 2 :(得分:0)
当我按照你的推荐(下图)运行它时,它会吐出来
Michigan has the abbreviation MI and a population of 1000
Michigan has the abbreviation MI and a population of 1000
Michigan has the abbreviation MI and a population of 1000
不确定为什么它会不断地这样做,我猜想是否出于某种原因选择一个完全随机的状态,因为它是一个字典,它每次都会改变状态,偶尔也会重复。
states1 = {
'state': 'Oregon', 'abbrev': 'OR','population': '10000',
'state': 'Florida', 'abbrev': 'MI', 'population': '1000',
'state': 'California', 'abbrev': 'CA', 'population': '1000',
'state': 'NewYork', 'abbrev': 'NY', 'population': '1000',
'state': 'Michigan','abbrev': 'MI','population': '1000',
}
for city, pop, in states1.items():
print "%s has the abbreviation %s and has a population of %s" % (states1['state'], states1['abbrev'], states1['population'])
答案 3 :(得分:0)
另一个例子,说明如何根据需要构建数据。
states1 = {
'Oregon': {'abrv': 'OR','population': '1000'},
'Florida':{ 'abrv': 'MI', 'population': '1000'},
'California':{'abrv': 'CA', 'population': '1000'},
'NewYork':{'abrv': 'NY', 'population': '1000'},
'Michigan':{'abrv': 'MI','population': '1000'}}
for state in states1:
print "%s has the abbreviation %s and a population of %s" %(state, states1[state]['abrv'], states1[state]['population'])
答案 4 :(得分:0)
刚刚看到最后一篇文章,这很有道理。至于它如何有用,我不知道,这只是我想做的事情,对一个键有三个值。我相信将来我可以从一个网站或数据库中获取信息并让它创建对,就像角色演员一样,但也许没有。这只是我生气的事情,我无法自己解决。