我有这种类型的字符串。
data = [{'value': 'Common Stock', 'footnoteid': ''},
{'value': 'Bond', 'footnoteid': 'F2, F3'},
{'value': 'Common Stock', 'footnoteid': ''},
{'value': 'Option', 'footnoteid': 'F4'}]
我希望这是两组变量。
obs | value | footnoteid
-----+--------------+------------
1 | Common Stock |
2 | Bond | F2, F3
3 | Common Stock |
4 | Option | F4
我尝试的代码是这样。
value=data.get['value']
list_value=reverse.value
footnote=data.get['footnote']
list_footnote=reverse.footnote
我的代码看不到正确的结果。
答案 0 :(得分:1)
使用dictionary comprehension
>>> data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}]
>>> result = {index:val['value']+' '+val['footnoteid'] for index,val in enumerate(data)}
输出:
>>> print(result)
{
0: 'Common Stock ',
1: 'Bond F2, F3',
2: 'Common Stock ',
3: 'Option F4'
}
OP新修改后:
您可以使用熊猫,如下所示,以获得新的预期输出:
>>> import pandas as pd
>>> df = pd.DataFrame(data)
输出:
>>> print(df)
footnoteid value
0 Common Stock
1 F2, F3 Bond
2 Common Stock
3 F4 Option
答案 1 :(得分:0)
这是带有字典的列表,请使用
# Formats correctly if I select numeric columns only, but of course I lose the other columns given use of select_if:
formattable(my_df %>%
select_if(., is.numeric), list(~ sign_formatter))
或使用data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}]
print( data[0].get('value'), data[0].get('footnoteid') )
print( data[1].get('value'), data[1].get('footnoteid') )
循环
for
要获取数字,您可以添加data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}]
for item in data:
print(item.get('value'), item.get('footnoteid'))
enumerate()
顺便说一句:您也可以将其直接与for number, item in enumerate(data, 1):
print(number, item.get('value'), item.get('footnoteid'))
一起使用来创建pandas
,这很有用。
DataFrame
DataFrame
import pandas as pd
data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}]
df = pd.DataFrame(data)
print(df)
答案 2 :(得分:0)
将zip
用于列表理解:
list_value, list_footnote = zip(*[[x['value'], x['footnoteid']] for x in data])
示例:
data = [{'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Bond', 'footnoteid': 'F2, F3'}, {'value': 'Common Stock', 'footnoteid': ''}, {'value': 'Option', 'footnoteid': 'F4'}]
list_value, list_footnote = zip(*[[x['value'], x['footnoteid']] for x in data])
print(list_value) # ('Common Stock', 'Bond', 'Common Stock', 'Option')
print(list_footnote) # ('', 'F2, F3', '', 'F4')