如何附加在 for 循环中创建的唯一列表
How to append a unique list created within a for loop
我有一个关于电影的数据框
df = pd.read_csv("https://raw.githubusercontent.com/Giovanni1085/UvA_CSDA_2021/main/assignments/miniproject/Pudding-Film-Dialogue-Clean.csv"
每部电影有 gender
和 proportion_of_dialogue
列。后者显示每个给定角色的对话比例,'gender' 列显示性别。
我想创建一个遍历每一行的 for 循环,并在每次一行在几个字符后给出一部新电影时创建一个新字典。我想在这本词典中列出女性和男性对话的比例。这一切都在它自己的字典中。
结果将类似于:
我有的是这个(很多):
proportion_per_film_dictionary = {}
prop_woman = 0
prop_man = 0
for i in range(len(df.index)):
if df.loc[i,'index1'] == 0: #I made a column with the index so I could do this for the first row
dct['film_%s' %i] = []
if df.loc[i, 'gender'] == 'woman':
prop_woman = prop_woman + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'gender'] == 'man':
prop_man = prop_man + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'title'] != df.loc[i+1,'title']:
dct['film_%s'%i].append(prop_man)
dct['film_%s'%i].append(prop_woman)
proportion_per_film_dictionary.append(dct['film_%s'%i])
prop_woman = None
prop_man = None
elif df.loc[i,'title'] == df.loc[i+1,'title']:
if df.loc[i, 'gender'] == 'woman':
prop_woman = prop_woman + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'gender'] == 'man':
prop_man = prop_man + df.loc[i,'proportion_of_dialogue']
elif df.loc[i,'title'] != df.loc[i+1, 'title']:
if df.loc[i, 'gender'] == 'woman':
prop_woman = prop_woman + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'gender'] == 'man':
prop_man = prop_man + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'title'] != df.loc[i+1,'title']:
dct['film_%s'%i].append(prop_man)
dct['film_%s'%i].append(prop_woman)
proportion_per_film_dictionary.append(dct['film_%s'%i])
prop_woman = None
prop_man = None
此代码显示了对每个电影标题的迭代,我首先也尝试了 i-1
,但显然 Python 不执行 -1
,尽管它执行 +1
。
我现在收到以下错误:
dict' object has no attribute 'append'
我不知道为什么。谁能帮助我?谢谢
在 python 词典中您不使用 append
,那是用于列表。对于字典,通过分配一个键来添加一个新值就足够了。像这样:
dct['film_%s'%i] = prop_man
dct['film_%s'%i] = prop_woman
我有一个关于电影的数据框
df = pd.read_csv("https://raw.githubusercontent.com/Giovanni1085/UvA_CSDA_2021/main/assignments/miniproject/Pudding-Film-Dialogue-Clean.csv"
每部电影有 gender
和 proportion_of_dialogue
列。后者显示每个给定角色的对话比例,'gender' 列显示性别。
我想创建一个遍历每一行的 for 循环,并在每次一行在几个字符后给出一部新电影时创建一个新字典。我想在这本词典中列出女性和男性对话的比例。这一切都在它自己的字典中。 结果将类似于:
我有的是这个(很多):
proportion_per_film_dictionary = {}
prop_woman = 0
prop_man = 0
for i in range(len(df.index)):
if df.loc[i,'index1'] == 0: #I made a column with the index so I could do this for the first row
dct['film_%s' %i] = []
if df.loc[i, 'gender'] == 'woman':
prop_woman = prop_woman + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'gender'] == 'man':
prop_man = prop_man + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'title'] != df.loc[i+1,'title']:
dct['film_%s'%i].append(prop_man)
dct['film_%s'%i].append(prop_woman)
proportion_per_film_dictionary.append(dct['film_%s'%i])
prop_woman = None
prop_man = None
elif df.loc[i,'title'] == df.loc[i+1,'title']:
if df.loc[i, 'gender'] == 'woman':
prop_woman = prop_woman + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'gender'] == 'man':
prop_man = prop_man + df.loc[i,'proportion_of_dialogue']
elif df.loc[i,'title'] != df.loc[i+1, 'title']:
if df.loc[i, 'gender'] == 'woman':
prop_woman = prop_woman + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'gender'] == 'man':
prop_man = prop_man + df.loc[i,'proportion_of_dialogue']
if df.loc[i,'title'] != df.loc[i+1,'title']:
dct['film_%s'%i].append(prop_man)
dct['film_%s'%i].append(prop_woman)
proportion_per_film_dictionary.append(dct['film_%s'%i])
prop_woman = None
prop_man = None
此代码显示了对每个电影标题的迭代,我首先也尝试了 i-1
,但显然 Python 不执行 -1
,尽管它执行 +1
。
我现在收到以下错误:
dict' object has no attribute 'append'
我不知道为什么。谁能帮助我?谢谢
在 python 词典中您不使用 append
,那是用于列表。对于字典,通过分配一个键来添加一个新值就足够了。像这样:
dct['film_%s'%i] = prop_man
dct['film_%s'%i] = prop_woman