我刚刚为python编写了这个简短的代码。这是学校的时间表。我不经常使用字典,因为这是我一直感到困惑的部分。
我想要的代码是print(monday["Period 1"])
,我重复5次,要清理,因此只需要一行代码。
我在想也许我应该使用for循环。但由于我并没有真正开始循环,我不知道如何正确使用它们。除了一两次。
这是我的代码到目前为止。
monday = {"P1" : "1 - English",
"P2" : "2 - Maths",
"P3" : "3 - PE",
"P4" : "4 - Computing",
"P5" : "5 - Computing"}
choice_day = input("What day would you like to know what you have? ")
choice_period = input("What period? Or just type NO if you want to know the full day: ")
if choice_day == "monday" and choice_period == "NO":
print(monday["P1"])
print(monday["P2"])
print(monday["P3"])
print(monday["P4"])
print(monday["P5"])
答案 0 :(得分:2)
字典中所有值的列表都以monday.values()
if choice_day == "monday" and choice_period == "NO":
for v in monday.values():
print v
或者您可以将列表中的每个值放入由换行符连接的一个字符串中:
if choice_day == "monday" and choice_period == "NO":
print '\n'.join(monday.values())
如果它们应该有序,请使用sorted
:
if choice_day == "monday" and choice_period == "NO":
print '\n'.join(sorted(monday.values()))
答案 1 :(得分:1)
假设您要根据示例中按字母顺序排序的键打印值,您可以使用以下内容:
if choice_day == "monday" and choice_period == "NO":
print '\n'.join(monday[k] for k in sorted(monday))
如果您的实际代码中的密钥应以不同于字母排序的方式进行排序,并且您事先了解此顺序,则可以执行以下操作:
order = ["P1", "P2", "P3", "P4", "P5"]
if choice_day == "monday" and choice_period == "NO":
print '\n'.join(monday[k] for k in order)
答案 2 :(得分:1)
当然,您希望按顺序查看课程 。 dict
值本身没有顺序。因此,使用list
可能比在此使用dict
更合适。
monday = ["1 - English",
"2 - Maths",
"3 - PE",
"4 - Computing",
"5 - Computing"]
if choice_day == "monday" and choice_period == "NO":
for course in monday:
print(course)
通过不使用词典,您可以避免必须排序,或使用一个列表,声明句点1出现在句号2之前,等等(例如order = ['P1', 'P2', ...]
)。该列表使订单内置。
如果由于某种原因你需要访问星期一的第3门课程,因为Python使用基于0的索引,你可以写monday[2]
。
但是,您可能希望使用dict来表示整个时间表:
schedule = {'monday': ["1 - English",
"2 - Maths",
"3 - PE",
"4 - Computing",
"5 - Computing"]
'tuesday': [...]}
您可以在此处使用dict
,因为用户可以在一周中的任何日输入。
如果您总是按顺序访问计划,那么您需要使用有序的数据结构,如列表或元组。
现在你可以像这样处理choice_day
的任何值:
if choice_period == "NO":
for course in schedule[choice_day]:
print(course)
(当用户输入不存在的choice_day
时,一定要考虑如何处理这种情况......一种可能性是在输入时审核选择。另一种选择是使用一个try..except
在这里。第三个 - 我的偏好 - 是使用argparse。)
无论如何,使用schedule
的dict可以避免让人头脑麻木的代码如下:
if choice_day == 'monday':
...
elif choice_day == 'tuesday':
...
答案 3 :(得分:0)
dict具有values()
方法,该方法返回给定字典中可用的所有值的列表。
您可以简单地遍历该列表,尝试以下代码:
if choice_day == "monday" and choice_period == "NO":
for v in monday.values():
print v
假设您只想打印密钥,请使用keys()
方法代替values()
if choice_day == "monday" and choice_period == "NO":
for k in monday.keys():
print k
如果您想要打印两个键,则使用items()
:
if choice_day == "monday" and choice_period == "NO":
for k, v in monday.items():
print k, v