简体   繁体   English

如何从包含单个键的多个值的字典中提取值?

[英]How can i extract values from a dictionary containing multiple values for a single key?

I have a dictionary我有一本字典

d={4: {Timestamp('1997-07-02 00:00:00'): -12.134525612322019,
  Timestamp('1997-07-04 00:00:00'): -3.663247640220524,
  Timestamp('1997-07-07 00:00:00'): -30.649875958814032,
  Timestamp('1997-07-08 00:00:00'): 17.924305289599648,
  Timestamp('1997-07-10 00:00:00'): -25.828099872622467}}

How do I extract only the datetime values of d?如何仅提取 d 的日期时间值? Also, what would you suggest since I actually have a nested dictionary and want to extract datetime values for each key?另外,既然我实际上有一个嵌套字典并且想要为每个键提取日期时间值,你会建议什么?

You could try this:你可以试试这个:

list(d[4].keys())

>>>[Timestamp('1997-07-02 00:00:00'),
    Timestamp('1997-07-04 00:00:00'),
    Timestamp('1997-07-07 00:00:00'),
    Timestamp('1997-07-08 00:00:00'),
    Timestamp('1997-07-10 00:00:00')]

Or if you want to convert each timestamp to datetime, you could do或者,如果您想将每个时间戳转换为日期时间,您可以这样做

datetimes = [t.to_pydatetime() for t in list(d[4].keys())]
datetimes

>>>[datetime.datetime(1997, 7, 2, 0, 0),
    datetime.datetime(1997, 7, 4, 0, 0),
    datetime.datetime(1997, 7, 7, 0, 0),
    datetime.datetime(1997, 7, 8, 0, 0),
    datetime.datetime(1997, 7, 10, 0, 0)]

EDIT:编辑:

if you have a long nested dictionary like this:如果你有一个像这样的长嵌套字典:

d = {1: {Timestamp('1997-07-02 00:00:00'): -12.134525612322019, 
         Timestamp('1997-07-04 00:00:00'): -3.663247640220524, 
         Timestamp('1997-07-07 00:00:00'): -30.649875958814032, 
         Timestamp('1997-07-08 00:00:00'): 17.924305289599648, 
         Timestamp('1997-07-10 00:00:00'): -25.828099872622467}, 
          
     2: {Timestamp('1997-07-02 00:00:00'): -12.134525612322019, 
         Timestamp('1997-07-04 00:00:00'): -3.663247640220524, 
         Timestamp('1997-07-07 00:00:00'): -30.649875958814032, 
         Timestamp('1997-07-08 00:00:00'): 17.924305289599648, 
         Timestamp('1997-07-10 00:00:00'): -25.828099872622467}, 
          
     3: {Timestamp('1997-07-02 00:00:00'): -12.134525612322019, 
         Timestamp('1997-07-04 00:00:00'): -3.663247640220524, 
         Timestamp('1997-07-07 00:00:00'): -30.649875958814032, 
         Timestamp('1997-07-08 00:00:00'): 17.924305289599648, 
         Timestamp('1997-07-10 00:00:00'): -25.828099872622467}}

and you want the datetime for every key, then you can iterate through the whole dict like this:并且您想要每个键的日期时间,然后您可以像这样遍历整个字典:

datetimes = []

for key in d: 
    for timestamp in d[key]:
        datetime = timestamp.to_pydatetime() 
        datetimes.append(datetime)

datetimes
>>>[datetime.datetime(1997, 7, 2, 0, 0),
    datetime.datetime(1997, 7, 4, 0, 0),
    datetime.datetime(1997, 7, 7, 0, 0),
    datetime.datetime(1997, 7, 8, 0, 0),
    datetime.datetime(1997, 7, 10, 0, 0),
    datetime.datetime(1997, 7, 2, 0, 0),
    datetime.datetime(1997, 7, 4, 0, 0),
    datetime.datetime(1997, 7, 7, 0, 0),
    datetime.datetime(1997, 7, 8, 0, 0),
    datetime.datetime(1997, 7, 10, 0, 0),
    datetime.datetime(1997, 7, 2, 0, 0),
    datetime.datetime(1997, 7, 4, 0, 0),
    datetime.datetime(1997, 7, 7, 0, 0),
    datetime.datetime(1997, 7, 8, 0, 0),
    datetime.datetime(1997, 7, 10, 0, 0)]

Or, if you want a whole new dict with the same keys but with the values as a list of datetimes, you can do this:或者,如果您想要一个具有相同键但将值作为日期时间列表的全新 dict,您可以这样做:

datetime_dict = {}

for key in d: 
    datetime_dict[key] = [ts.to_pydatetime() for ts in d[key]]

datetime_dict
>>>{1: [datetime.datetime(1997, 7, 2, 0, 0),
  datetime.datetime(1997, 7, 4, 0, 0),
  datetime.datetime(1997, 7, 7, 0, 0),
  datetime.datetime(1997, 7, 8, 0, 0),
  datetime.datetime(1997, 7, 10, 0, 0)],
   2: [datetime.datetime(1997, 7, 2, 0, 0),
  datetime.datetime(1997, 7, 4, 0, 0),
  datetime.datetime(1997, 7, 7, 0, 0),
  datetime.datetime(1997, 7, 8, 0, 0),
  datetime.datetime(1997, 7, 10, 0, 0)],
   3: [datetime.datetime(1997, 7, 2, 0, 0),
  datetime.datetime(1997, 7, 4, 0, 0),
  datetime.datetime(1997, 7, 7, 0, 0),
  datetime.datetime(1997, 7, 8, 0, 0),
  datetime.datetime(1997, 7, 10, 0, 0)]}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM