访问词典中的列表项

时间:2019-08-07 12:44:29

标签: python list dictionary

我正在尝试找出这是使用列表和字典的组合来访问给定位置的单个温度(int)的最干净的方法。

Multi_City_Forecast =  [ 
    { 'place': {'city' : "Blacksburg, VA", 'zip code' : 24061} , 'forecast' : [76, 72, 64] } , 
    { 'place': {'city' : "Seattle, WA",    'zip code' : 98101} , 'forecast' : [63, 63, 69] } , 
    { 'place': {'city' : "Miami, FL",      'zip code' : 33101} , 'forecast' : [86, 87, 88] } , 
    { 'place': {'city' : "San Jose, CA",   'zip code' : 95103} , 'forecast' : [79, 82, 83] } , 
    { 'place': {'city' : "New York, NY",   'zip code' : 10036} , 'forecast' : [85, 88, 92] }
]

for forecast in Multi_City_Forecast:
    z = forecast['forecast']
    for a in z:
        print(a)

上面的代码确实提供了以下内容(这是我想要的),但这是执行此操作的最佳方法吗?:

  

76

     

72

     

64

     

63

     

63

     

69

     

86

     

87

     

88

     

79

     

82

     

83

     

85

     

88

     

92

请问有什么意见吗?谢谢。

3 个答案:

答案 0 :(得分:4)

您可以将其减少为

for forecast in Multi_City_Forecast:
    for a in forecast['forecast']:
        print(a)

但是除此之外,这似乎是最有效的。

答案 1 :(得分:2)

如果您只想将它​​们打印在每个城市的一行上,则可以使用以下命令将它们放在一行上:

for forecast in Multi_City_Forecast:
    print(*forecast['forecast'])

# prints
76 72 64
63 63 69
86 87 88
79 82 83
85 88 92

答案 2 :(得分:0)

如果您真正想要的是将每一行中的每个数字都打印为一行,那么Jammy Dodger给出的解决方案是一种很好的方法,如果您想成为一个发烧友,则可以对列表进行一些理解喜欢以下内容以获得相同的结果:

for forecast in Multi_City_Forecast: 
   [print(a) for a in forecast["forecast"]]

很显然,您可以对列表理解更深入一点,然后执行以下操作:

[a for forecast in Multi_City_Forecast for a in forecast["forecast"]]

但是请记住,这会向您抛出一个列表:

[76, 72, 64, 63, 63, 69, 86, 87, 88, 79, 82, 83, 85, 88, 92]

很显然,您可以保留print()语句来打开理解:

[print(a) for forecast in Multi_City_Forecast for a in forecast["forecast"]]

但是它会引发以下结果,这可能不理想:

76
72
64
63
63
69
86
87
88
79
82
83
85
88
92
[None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]