因此,对于出现此问题的问题的背景,请参阅此link。
正如公认的答案所建议的那样,我继续提供的代码,并能够完成我最初想要的。但是制作字典不是我的最终目标。我使用该字典的最终目的是将其转换为DataFrame,而我能够做到。
这是我所做的:
df = pd.DataFrame(([st, cty] for st, cty in dic.items() for cty in dic[st]),
columns = ["State", "City"])
供您参考,
dic
变量如下:{'Alabama': ['Auburn',
'Florence',
'Jacksonville',
'Livingston',
'Montevallo',
'Troy',
'Tuscaloosa',
'Tuskegee'],
'Alaska': ['Fairbanks'],
'Arizona': ['Flagstaff', 'Tempe', 'Tucson'],
'Arkansas': ['Arkadelphia',
'Conway',
'Fayetteville',
'Jonesboro',
'Magnolia',
'Monticello',
'Russellville',
'Searcy'],
'California': ['Angwin',
'Arcata',
'Berkeley',
'Chico',
'Claremont',
'Cotati',
'Davis',
'Irvine',
'Isla Vista',
'University Park, Los Angeles',
'Merced',
'Orange',
'Palo Alto',
'Pomona',
'Redlands',
'Riverside',
'Sacramento',
'University District, San Bernardino',
'San Diego',
'San Luis Obispo',
'Santa Barbara',
'Santa Cruz',
'Turlock',
'Westwood, Los Angeles',
'Whittier'],
'Colorado': ['Alamosa',
'Boulder',
'Durango',
'Fort Collins',
'Golden',
'Grand Junction',
'Greeley',
'Gunnison',
'Pueblo, Colorado'],
'Connecticut': ['Fairfield',
'Middletown',
'New Britain',
'New Haven',
'New London',
'Storrs',
'Willimantic'],
'Delaware': ['Dover', 'Newark'], .... all the other states with their city names
运行上面的代码后,我得到的输出如下(截图):
我的查询是:尽管我获得了期望的输出,并且尽管我制定了“ DataFrame理解”,但我可以这么说,我并不完全理解双精度
for
。有人可以解释在这种情况下另一个
for
中的for
是如何工作的。我是熊猫的初学者。 最佳答案
那是一个发电机,与熊猫无关。
术语([x, y] for x in q for y in p)
是Python生成器。您可以将其分配给变量,例如g = ([x, y] for x in q for y in p)
,然后对其进行迭代:
for element in g:
print(element)
熊猫此时接受生成器并对其进行迭代以获取
DataFrame
的所有值。双重
for
的评估如下:for x in q:
for y in p:
yield [x, y]
因此,此生成器生成的是
q
和p
中元素的所有组合的平面列表。关于python - 列表理解中的双重“for”如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48093234/